FindFirstChangeNotification是用于Windows上的文件系统更改通知的最佳API吗?
问题描述:
我是新来的Windows编程,我试图通知文件系统的所有变化(类似于从SysInternals显示,但通过API的FileMon信息)。对于每个(非网络,非子系列)驱动器,我最好还是选择FindFirstChangeNotification还是还有其他更适合的C/C++ API?FindFirstChangeNotification是用于Windows上的文件系统更改通知的最佳API吗?
答
FindFirstChangeNotification
是好的,但略多的最终权力,你应该使用ReadDirectoryChangesW.
(事实上,它甚至建议的文件中!)
它不需要一个函数指针,它需要你手动解码原始缓冲区,它使用Unicode文件名,但它通常更好,更灵活。另一方面,如果你想要做FileMon做的事情,你应该做FileMon做的事情,并使用IFS to create and install a file system filter。
答
还有其他方法可以做到这一点,但其中大部分都需要努力(或从应用程序获取性能,或者必须阻止线程使用它们等)。如果你不习惯处理函数指针等,FindFirstChangeNotification有点复杂,但它具有让操作系统为你完成大部分工作的优点。
答
您可以使用FileSystemWatcher类。非常高效,但无法与网络共享驱动器配合使用。
答
实际上FileSystemWatcher可以与共享网络驱动器完美配合。我现在在一个应用程序中使用它,除其他外,它监视文件系统的变化。 (www.tabbles.net)。
我在最后找到了ReadDirectoryChangesW,并且开始研究如何将返回的缓冲区转换为可以传回给我的Java代码的表单,但它绝对做到了我想要的。 – 2008-09-14 23:23:54