前言:
Windows提供了几种方式对文件和目录进行监控,包括:FindFirstChangeNotification、ReadDirectoryChangesW、SHChangeNotifyRegister、变更日志(Change Journal)等。
FindFirstChangeNotification函数,可以监控到目标目录及其子目录中所有文件的变化,但不能监控到具体是哪一个文件发生改变。
ReadDirectoryChangesW 能监控到目标目录下某一文件发生改变,并且可以知道发生变化的是哪一个文件。(注意,FindFirstChangeNotification 和 ReadDirectoryChangesW 是互斥的,不能同时使用。)
但是:使用Windows API(ReadDirectoryChangesW)不能满足要求,如果变化量大又密集时,丢失通知现象很严重。
如果使用SHChangeNotifyRegister来监视文件变更的话,大部分用户文件操作可以被记录,但是部分系统操作将不会被记录。
于是,今天的这份源码将使用Change Journal来监视(查看)文