所以,问题是:我收到了一些我不想收到的通知。但我不知道我得到它们的文件/目录。有没有办法知道为什么给定的通知被解雇了?
如果您考虑 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
在专业的 Win32 api 新闻组 news://comp.os.ms-windows.programmer.win32 上查看著名的 MS 示例(C 代码)(自 90 年代...)