使用ReadDirectoryChangesW读取文件夹本身的更改(WINDOWS)

时间:2016-03-23 10:10:14

标签: windows winapi event-handling filesystems msdn

来自文档(ReadDirectoryChangesW):

“检索描述指定目录内更改的信息。该函数不会报告对指定目录本身的更改。”

我的问题是:我用什么来报告对指定目录本身的更改?

我希望能够不仅捕获文件夹本身中的事物和子事物的变化,而且还能检测例如文件夹本身何时被删除。

一个策略将实际监控我真正感兴趣的文件夹的父级的更改,然后在删除我感兴趣的文件夹时使用它来生成事件。这有效,但有可能产生成千上万的“无趣”事件。

第二个策略是对我真正感兴趣的文件夹下的内容进行递归监视,然后对其父进行非递归监视。然后,非递归监视器将能够告诉我何时删除感兴趣的真实文件夹。

后者,第二种策略,产生更少的事件,是我想要使用的策略。但是:它在“过程中”不起作用。也就是说,如果我开始以递归方式监视感兴趣的文件夹(HANDLE A),并且它的父级是非递归的(HANDLE B),然后在同一个过程中,我尝试删除感兴趣的文件夹,不会生成删除事件它(即使我从控制台验证该东西不再存在)。我怀疑这是因为HANDLE A文件夹仍处于打开状态,即使我在CreateFileW的调用中包含了“FILE_SHARE_DELETE”标志,它给了我一个HANDLE A,它根本无法工作。

请注意,“在流程外”,即当我从完全独立的流程中删除文件夹时,上述策略确实有效。

那么,我的选择是什么?

非常感谢,

本。

0 个答案:

没有答案