所以,问题是:我得到一些通知,我不希望得到的。但我不知道是出于什么文件/目录我得到了他们。有没有办法知道为什么给定的通知被解雇了?

如果您想ReadDirectoryChangesW,请包括一个有意义的代码示例。

有帮助吗?

解决方案

如果您希望Windows告诉你什么具体的文件或子目录改变,你将需要使用的 ReadDirectoryChangesW 。如果您使用的是完成例程的异步模式相当简单。

在另一方面,你可能会使用稍微复杂一点的 I / O完成端口方法。我建议下载韦斯·琼斯优秀 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 /库/ ms687025(VS.85)的.aspx

请参阅专业Win32 API的新闻组消息://comp.os.ms-windows.programmer.win32 对于公知的MS的样品(C代码)(自90年代...)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top