1

問題は、受け取りたくない通知を受け取ることです。しかし、どのファイル/ディレクトリを取得したのかわかりません。特定の通知が発行された理由を知る方法はありますか?

ReadDirectoryChangesW について考える場合は、意味のあるコード サンプルを含めてください。

4

3 に答える 3

2

特定のファイルまたはサブディレクトリが変更されたことを Windows に知らせたい場合は、ReadDirectoryChangesWを使用する必要があります。完了ルーチンを使用する場合、非同期モードは非常に単純です。

一方、もう少し複雑なI/O 完了ポートアプローチを使用すると、パフォーマンスが向上する可能性があります。出発点として、 Wes Jones の優れたCDirectoryChangeWatcher ソース コードをダウンロードすることをお勧めします。FILE_NOTIFY_INFORMATION特にレコードを解析する際に、彼のコードが回避するのに役立つ落とし穴がいくつかあります。

于 2009-05-18T20:13:26.287 に答える
0

〜擬似コード

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

于 2009-02-02T21:23:22.843 に答える
0

よく知られているMSサンプル(Cコード)については、プロのWin32 apiニュースグループnews://comp.os.ms-windows.programmer.win32を参照してください(90年代以降...)

于 2009-02-04T14:46:43.940 に答える