15,471
社区成员
发帖
与我相关
我的任务
分享
#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;
}
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);
}
}
}