問題は、受け取りたくない通知を受け取ることです。しかし、どのファイル/ディレクトリを取得したのかわかりません。特定の通知が発行された理由を知る方法はありますか?
ReadDirectoryChangesW について考える場合は、意味のあるコード サンプルを含めてください。
問題は、受け取りたくない通知を受け取ることです。しかし、どのファイル/ディレクトリを取得したのかわかりません。特定の通知が発行された理由を知る方法はありますか?
ReadDirectoryChangesW について考える場合は、意味のあるコード サンプルを含めてください。
特定のファイルまたはサブディレクトリが変更されたことを Windows に知らせたい場合は、ReadDirectoryChangesWを使用する必要があります。完了ルーチンを使用する場合、非同期モードは非常に単純です。
一方、もう少し複雑なI/O 完了ポートアプローチを使用すると、パフォーマンスが向上する可能性があります。出発点として、 Wes Jones の優れたCDirectoryChangeWatcher ソース コードをダウンロードすることをお勧めします。FILE_NOTIFY_INFORMATION
特にレコードを解析する際に、彼のコードが回避するのに役立つ落とし穴がいくつかあります。
〜擬似コード
HANDLE handles[MAX_HANDLES];
std::string dir_array[MAX_HANDLES];
for i from 0 to MAX_HANDLES:
h[i] = FindFirstChangeNotification(dir_array[i]...);
nCount = MAX_HANDLES;
ret = WaitForMultipleObjects(handles, nCount ...);
// check if ret returns something between WAIT_OBJECT_0 and WAIT_OBJECT_0+nCount-1
if "so":
ret -= WAIT_OBJECT_0;
cout << "Directory " << dir_array[ret] << " changed" << endl;
参照: http: //msdn.microsoft.com/en-us/library/ms687025 (VS.85).aspx
よく知られているMSサンプル(Cコード)については、プロのWin32 apiニュースグループnews://comp.os.ms-windows.programmer.win32を参照してください(90年代以降...)