我已经设法开始ReadDirectoryChangesW()
处理我需要监控的文件夹。我正在使用 IO Completion 例程,所有更改监视都是由一个线程完成的,该线程除了等待更改和停止信号之外什么都不做。这一切都很好。完成例程当前只是将更改的文件名和操作从通知记录记录到系统调试日志。再次,似乎工作正常。在测试时,我正在等待所有可用的事件(掩码 0x017F)。
我的问题是:为什么我从来没有看到任何 LAST WRITE 更改事件,比如记事本,保存更改的文件?
我最初只等待 FILE_NOTIFY_CHANGE_CREATION、_LAST_WRITE 和 _FILE_NAME 事件,并想知道为什么我从未看到最后写入事件(但我确实看到了 _DIR_NAME 事件,但我并没有等待),所以我改为等待所有事件。
我的代码目前与我在这里找到的示例非常相似: ReadDirectoryChangesW
在调试时,我曾经FindFirstFile()
在更改被监视的文件之前和之后获取 WIN32_FIND_DATA 的副本,以验证上次写入时间是否已更改——确实如此。那为什么不通知呢?为了启用它,我需要做些什么特别的事情吗?