ReadDirectoryChangesW() 和 FindFirstChangeNotification() API 之间有什么区别?

str*_*nut 5 readdirectorychangesw

我想知道特定目录的任何更改文件。所以,我想出了 ReadDirectoryChangesW() 和 FindFirstChangeNotification() - FindNextChangeNotification() API。

然后,我使用 ReadDirectoryChangesW() 函数实现。但是,我不知道为什么会有 FindFirst...blabla API。我认为 ReadDirectoryChangesW() 函数可以完成 FindFirst... API 的所有工作。

有什么不同?

Oha*_*adM 6

查找第一个更改通知

创建更改通知句柄并设置初始更改通知过滤条件。{...}该函数并不表示满足等待条件的更改。要检索有关特定更改的信息作为通知的一部分,请使用 ReadDirectoryChangesW 函数。

读取目录更改W

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

结论:

如果您想注册文件侦听器,请使用FindFirstChangeNotification,但请记住,此函数不会等待更改,为了实现这一点,您需要在注册文件侦听器后使用WaitForSingleObject 。

如果您不关心正在侦听的路径中的更改类型,则无需使用ReadDirectoryChangesW。如果您需要知道触发WaitForSingleObject的确切更改是什么,那么您需要使用ReadDirectoryChangesW