关于ReadDirectoryChangesW多次通知???

jamseyang 2010-04-26 08:37:13
我只修改一次文件,为什么下面代码会打印多次呢??

#include <stdio.h>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{



HANDLE hand = CreateFile(
"D:\\Test",
FILE_LIST_DIRECTORY,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL
);

char notify[1024] = {0};
FILE_NOTIFY_INFORMATION *pnotify=(FILE_NOTIFY_INFORMATION *)notify;
DWORD cbBytes;
while(true)
{
BOOL ret = ReadDirectoryChangesW(hand,
¬ify,
sizeof(notify),
TRUE,
FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_FILE_NAME,
&cbBytes,
NULL,
NULL);

if(ret)
{
char AnsiChar[1024] = {0};
WideCharToMultiByte(CP_ACP,0,pnotify->FileName,pnotify->FileNameLength/2,AnsiChar,1024,NULL,NULL);
if(FILE_ACTION_MODIFIED == pnotify->Action)
{
printf("%s Modified\n",AnsiChar);//为什么会打印多次???
}
else if (FILE_ACTION_ADDED == pnotify->Action)
{
printf("%s Add\n",AnsiChar);
}
else if (FILE_ACTION_REMOVED == pnotify->Action)
{
printf("%s Removed\n",AnsiChar);
}
}
}

return 0;
}

...全文
396 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mcaok 2010-04-27
  • 打赏
  • 举报
回复
像word,excel等分块写入的软件当然会多次通知。而且改名,复制,新建都会多出一个Modify通知。
jamseyang 2010-04-27
  • 打赏
  • 举报
回复
还有个问题"C:\Documents and Settings\Administrator\Application Data"为什么CreateFile出错呀????
jamseyang 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mcaok 的回复:]
像word,excel等分块写入的软件当然会多次通知。而且改名,复制,新建都会多出一个Modify通知。
[/Quote]
这个我知道,我修改的是txt
尹成 2010-04-26
  • 打赏
  • 举报
回复
改成这样试试:


if(true)
{
BOOL ret = ReadDirectoryChangesW(hand,
¬ify,
sizeof(notify),
TRUE,
FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_FILE_NAME,
&cbBytes,
NULL,
NULL);

if(ret)
{
char AnsiChar[1024] = {0};
WideCharToMultiByte(CP_ACP,0,pnotify->FileName,pnotify->FileNameLength/2,AnsiChar,1024,NULL,NULL);
if(FILE_ACTION_MODIFIED == pnotify->Action)
{
printf("%s Modified\n",AnsiChar);//为什么会打印多次???
}
else if (FILE_ACTION_ADDED == pnotify->Action)
{
printf("%s Add\n",AnsiChar);
}
else if (FILE_ACTION_REMOVED == pnotify->Action)
{
printf("%s Removed\n",AnsiChar);
}
}
}


15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧