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

时间:2020-03-05 18:40:49  来源:igfitidea点击:

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

解决方案

回答

还有其他方法可以执行此操作,但是大多数方法都需要我们自己付出努力(或者从应用程序中获取性能,或者我们必须阻止线程才能使用它们,等等)。如果我们不习惯使用函数指针等,FindFirstChangeNotification会有些复杂,但是它具有让OS为我们完成大部分工作的优点。

回答

FindFirstChangeNotification是可以的,但是要获得更多的最终功能,我们应该使用ReadDirectoryChangesW。

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

另一方面,如果要执行FileMon的操作,则可能应该执行FileMon的操作,并使用IFS创建和安装文件系统过滤器。

回答

我们可以使用FileSystemWatcher类。效率很高,但不能与网络共享驱动器一起使用。

回答

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