【问题标题】:Is FindFirstChangeNotification the best API to use for file system change notification on windows?FindFirstChangeNotification 是在 Windows 上用于文件系统更改通知的最佳 API 吗?
【发布时间】:2010-09-06 04:59:04
【问题描述】:

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

【问题讨论】:

    标签: c windows winapi file notifications


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      FindFirstChangeNotification 很好,但要获得更强大的功能,您应该使用ReadDirectoryChangesW.(事实上,文档中甚至推荐使用它!)

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

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

      【讨论】:

      • 我最终选择了 ReadDirectoryChangesW,并且很开心地研究了如何将返回的缓冲区转换为我可以传递回 Java 代码的形式,但它确实可以满足我的需求。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多