我是Windows编程的新手,我正在尝试通知文件系统的所有更改(类似于来自SysInternals的FileMon显示的信息,但是通过API)。我最好的选择是针对每个(非网络,非子网格)驱动器的FindFirstChangeNotification还是其他更合适的C / C ++ API?
答案 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类。效率很高但无法使用网络共享驱动器。