FindFirstChangeNotification 是 Windows 上用于文件系统更改通知的最佳 API 吗?
-
08-06-2019 - |
题
我是 Windows 编程新手,我试图获取文件系统的所有更改的通知(类似于 SysInternals 中的 FileMon 显示的信息,但通过 API)。每个(非网络、非替代)驱动器的 FindFirstChangeNotification 是我的最佳选择还是还有其他更合适的 C/C++ API?
解决方案
FindFirstChangeNotification
很好,但如果你想获得更多的终极力量,你应该使用 ReadDirectoryChangesW.
(事实上,文档中甚至推荐了它!)
它不需要函数指针,它确实需要您手动解码原始缓冲区,它使用 Unicode 文件名,但它通常更好、更灵活。
另一方面,如果您想做 FileMon 所做的事情,您可能应该做 FileMon 所做的事情并使用 IFS 创建并安装文件系统过滤器.
其他提示
还有其他方法可以做到这一点,但大多数都需要您付出努力(或者从您的应用程序中获取性能,或者您必须阻止线程才能使用它们,等等)。如果您不习惯处理函数指针等,FindFirstChangeNotification 会有点复杂,但它的优点是让操作系统为您完成大部分工作。
实际上,FileSystemWatcher 与共享网络驱动器完美配合。我现在正在一个应用程序中使用它,该应用程序除其他外,还监视文件系统的更改。(www.tabbles.net)。
您可以使用 FileSystemWatcher 类。非常高效,但无法与网络共享驱动器一起使用。
不隶属于 StackOverflow