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

有帮助吗?

解决方案

FindFirstChangeNotification 很好,但如果你想获得更多的终极力量,你应该使用 ReadDirectoryChangesW. (事实上​​,文档中甚至推荐了它!)

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top