客户端监控被监控目录(含所有子目录)下的变化,我们可以采用ReadDirectoryChangesW 函数 ,该函数实现对指定的目录进行监控,并且返回详细的文件变化信息。
函数原型:
BOOL WINAPI ReadDirectoryChangesW(
__in HANDLE hDirectory;
__out LPVOID lpBuffer;
__in DWORD nBufferLength;
__in BOOL bWatchSubtree; // 监视目录. 一般选择 TRUE
__in DWORD dwNotifyFilter; // 对文件过滤的方式和标准
__out_opt LPDWORD lpBytesReturned;// 将接收的字节数转入lpBuffer参数
__inout_opt LPOVERLAPPED lpOverlapped; // 一般选择 NULL
__in_opt LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine;
// 一般选择 NULL
);
1.首先该函数使用CreateFile打开目录,打开目录的时候一定要包含FILE_LIST_DIRECTORY参数,它规定了一种必需的访问权限,并返回目录的句柄。
2.lpBuffer,这个缓冲区定义的是FILE_NOTIFY