1、首先看一下ReadDirectoryChangesW()参数的作用。BOOLWINAPIReadDirectoryChangesW( HANDLEhDirectory,// 对目录进行监视的句柄 LPVOIDlpBuffer,// 一个指向DWORD类型的缓冲区,其中可以将获取的数据结果将其返回。 DWORDnBufferLength,// 指lpBuffer的缓冲区的大小值,以字节为单位。 BOOLbWatchSubtree,// 监视目录. 一般选择 TRUE DWORDdwNotifyFilter,// 对文件过滤的方式和标准 LPDWORDlpBytesReturned,// 将接收的字节数转入lpBuffer参数 LPOVERLAPPEDlpOverlapped,// 一般选择 NULL LPOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine// 一般选择 NULL);
2、用例:HANDLE handle_directory = CreateFile(“C:\文件夹”, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);ReadDirectoryChangesW(handle_directory, (LPVOID)notify, sizeof(notify), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_LAST_ACCESS|FILE_NOTIFY_CHANGE_SIZE|FILE_ACTION_ADDED, (LPDWORD)&(parameter->in_out_BytesReturned), NULL, NULL))