比如移进一个文件夹到监控的目录,其中文件数量大于两个,但是得到的信息只有两个。请各位大虾帮帮忙!
代码如下:
#define _WIN32_WINNT 0x0500
#define _UNICODE
#define UNICODE
#include<windows.h>
#include<TCHAR.h>
#include<stdio.h>
#include<stdlib.h>
#include<winbase.h>#define BUF_SIZE 128*1024HANDLE hDirectory;
TCHAR tempPath[2*1024];
TCHAR path[2*1024];int main(void)
{
DWORD size;
PFILE_NOTIFY_INFORMATION pFNI;
char buf[BUF_SIZE]; hDirectory = CreateFile(
_T("D:\\dirChange"), // pointer to the file name
FILE_LIST_DIRECTORY, // access (read/write) mode
FILE_SHARE_READ|FILE_SHARE_DELETE, // share mode
NULL, // security descriptor
OPEN_EXISTING, // how to create
FILE_FLAG_BACKUP_SEMANTICS, // file attributes
NULL // file with attributes to copy
); if(INVALID_HANDLE_VALUE == hDirectory)
{
printf("invalid directory!\n");
}
while(1)
{
memset(buf, 0, sizeof(buf));
if(!ReadDirectoryChangesW(hDirectory, buf, BUF_SIZE, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME,
&size, NULL, NULL) || GetLastError() == ERROR_INVALID_HANDLE)
{
printf("error!\n");
break;
}
MessageBox(NULL, _T("get!"), _T("移进加密路径的文件"), MB_OK);
pFNI = (PFILE_NOTIFY_INFORMATION)buf;
if(pFNI->Action == FILE_ACTION_ADDED)
{
//pFNI->FileName没有终结符,这里得用mencpy向tempPath写入后就有终结符了
memset(tempPath, 0, sizeof(tempPath));
memcpy( tempPath, pFNI->FileName, pFNI->FileNameLength );
memset(path, 0, sizeof(path));
wsprintf(path, _T("D:\\dirChange\\%s"),tempPath);
MessageBox(NULL, path, _T("移进加密路径的文件"), MB_OK);
}
}
CloseHandle(hDirectory);
}
代码如下:
#define _WIN32_WINNT 0x0500
#define _UNICODE
#define UNICODE
#include<windows.h>
#include<TCHAR.h>
#include<stdio.h>
#include<stdlib.h>
#include<winbase.h>#define BUF_SIZE 128*1024HANDLE hDirectory;
TCHAR tempPath[2*1024];
TCHAR path[2*1024];int main(void)
{
DWORD size;
PFILE_NOTIFY_INFORMATION pFNI;
char buf[BUF_SIZE]; hDirectory = CreateFile(
_T("D:\\dirChange"), // pointer to the file name
FILE_LIST_DIRECTORY, // access (read/write) mode
FILE_SHARE_READ|FILE_SHARE_DELETE, // share mode
NULL, // security descriptor
OPEN_EXISTING, // how to create
FILE_FLAG_BACKUP_SEMANTICS, // file attributes
NULL // file with attributes to copy
); if(INVALID_HANDLE_VALUE == hDirectory)
{
printf("invalid directory!\n");
}
while(1)
{
memset(buf, 0, sizeof(buf));
if(!ReadDirectoryChangesW(hDirectory, buf, BUF_SIZE, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME,
&size, NULL, NULL) || GetLastError() == ERROR_INVALID_HANDLE)
{
printf("error!\n");
break;
}
MessageBox(NULL, _T("get!"), _T("移进加密路径的文件"), MB_OK);
pFNI = (PFILE_NOTIFY_INFORMATION)buf;
if(pFNI->Action == FILE_ACTION_ADDED)
{
//pFNI->FileName没有终结符,这里得用mencpy向tempPath写入后就有终结符了
memset(tempPath, 0, sizeof(tempPath));
memcpy( tempPath, pFNI->FileName, pFNI->FileNameLength );
memset(path, 0, sizeof(path));
wsprintf(path, _T("D:\\dirChange\\%s"),tempPath);
MessageBox(NULL, path, _T("移进加密路径的文件"), MB_OK);
}
}
CloseHandle(hDirectory);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货