开源地址:https://gitcode.net/m0_59988052/watchdog
这个项目的原理:ReadDirectoryChangesW()函数
函数原型:
[C++] 纯文本查看 复制代码 BOOL WINAPI ReadDirectoryChangesW(
__in HANDLE hDirectory,//指向监控目录的句柄,可以用CreatFile生成
__in_out LPVOID lpBuffer,//存储修改信息的首地址
__in DWORD nBufferLength,//分配的存储修改信息的空间的长度
__in BOOL bWatchSubtree,//TRUE则监控子目录,FALSE则不监控
__in DWORD dwNotifyFilter,//通知条件
__out LPDWORD lpBytesReturned,//该函数返回信息的字节数,也就是存到lpBuffer中的内容的字节数
__in LPOVERLAPPED lpOverlapped,//一个指向OVERLAPPED结构的指针,他在同步调用时提供数据供使用,否则他就为NULL
__in LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine//当操作结束或被取消或者线程进入等待状态时的一个指向将被调用操作的指针
);
功能:监控文件修改,并记录文件修改的相关信息,如修改的文件名,何种类型的修改等。
返回值:如果函数成功,返回值就是非0。对于同步调用,这意味着操作成功,对于异步调用,这意味着操作成功地排队。如果函数失败,返回值是0。如果操作目录或文件系统不支持这个操作,函数将返回ERROR_INVALID_FUNCTION,可以使用GetLastError()函数获取。
注意,FindFirstChangeNotification 和 ReadDirectoryChangesW 是互斥的,不能同时使用。
|