FindFirstChangeNotification是用于Windows上的文件系统更改通知的最佳API吗?

时间:2008-08-19 17:44:27

标签: c windows winapi file notifications

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

4 个答案:

答案 0 :(得分:22)

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

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

另一方面,如果你想做FileMon所做的事情,你应该做FileMon做的事情并使用IFS to create and install a file system filter

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

您可以使用FileSystemWatcher类。效率很高但无法使用网络共享驱动器。