18

我是 Windows 编程的新手,我正在尝试获取有关文件系统所有更改的通知(类似于来自 SysInternals 的 FileMon 显示的信息,但通过 API)。每个(非网络、非替代)驱动器的 FindFirstChangeNotification 是我最好的选择,还是有其他更合适的 C/C++ API?

4

4 回答 4

22

FindFirstChangeNotification很好,但是你应该使用更多的终极力量ReadDirectoryChangesW.(事实上,它甚至在文档中被推荐!)

它不需要函数指针,它确实需要您手动解码原始缓冲区,它使用 Unicode 文件名,但它通常更好更灵活。

另一方面,如果您想做 FileMon 所做的事情,您可能应该做 FileMon 所做的事情并使用IFS 创建和安装文件系统过滤器

于 2008-08-22T17:11:16.007 回答
0

还有其他方法可以做到这一点,但其中大多数都需要您付出努力(或从您的应用程序中获取性能,或者您必须阻止线程才能使用它们等)。如果您不习惯处理函数指针等,FindFirstChangeNotification 会有点复杂,但它的优点是让操作系统为您完成大部分工作。

于 2008-08-19T18:31:47.917 回答
0

实际上 FileSystemWatcher 与共享网络驱动器完美配合。我现在在一个应用程序中使用它,其中包括监视文件系统的更改。(www.tabbles.net)。

于 2009-08-20T17:14:13.167 回答
-1

您可以使用 FileSystemWatcher 类。非常高效,但无法与网络共享驱动器一起使用。

于 2009-06-11T13:55:57.300 回答