const int buf_size = 1024;
TCHAR buf[buf_size];
DWORD dwBufWrittenSize;
HANDLE hDir;
hDir = CreateFile(lpDir, FILE_LIST_DIRECTORY, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hDir == INVALID_HANDLE_VALUE)
{
DWORD dwErrorCode;
dwErrorCode = GetLastError();
CloseHandle(hDir);
exit(0);
}
while(true)
{
if(ReadDirectoryChangesW(hDir, &buf, buf_size, FALSE, FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_ATTRIBUTES \
, &dwBufWrittenSize, NULL, NULL))
{
FILE_NOTIFY_INFORMATION * pfiNotifyInfo = (FILE_NOTIFY_INFORMATION*)buf;
DWORD dwNextEntryOffset;
do
{
dwNextEntryOffset = pfiNotifyInfo->NextEntryOffset;
DWORD dwAction = pfiNotifyInfo->Action;
DWORD dwFileNameLength = pfiNotifyInfo->FileNameLength;
if(_tcsnccmp(pfiNotifyInfo->FileName, lpFileName, _tcsclen(lpFil
ReadDirectoryChanges监控文件改动
最新推荐文章于 2022-07-20 16:52:20 发布
该博客介绍了如何利用Windows API函数ReadDirectoryChangesW来实时监控指定目录中文件的大小、最后写入时间或属性变化。通过创建并打开目标目录,设置监控选项,然后在一个无限循环中读取并解析返回的文件通知信息,从而实现文件改动的监测。当检测到指定文件发生变更时,调用Process()进行处理。
摘要由CSDN通过智能技术生成