神奇了!!高手来看看这个CreateFile为什么返回INVALID_HANDLE_VALUE??????
while(TRUE)
{
memset(pcBufferNs,0,DeFileWaterBuffer);
DWORD BytesReturned=0;
if( ReadDirectoryChangesW(hDir,
pNotify,
DeFileWaterBuffer,
true,
// FILE_NOTIFY_CHANGE_FILE_NAME|
// FILE_NOTIFY_CHANGE_DIR_NAME|
// FILE_NOTIFY_CHANGE_ATTRIBUTES|
FILE_NOTIFY_CHANGE_SIZE|
// FILE_NOTIFY_CHANGE_LAST_WRITE|
// FILE_NOTIFY_CHANGE_LAST_ACCESS|
FILE_NOTIFY_CHANGE_CREATION,
// FILE_NOTIFY_CHANGE_SECURITY
&BytesReturned,
NULL,
NULL ) )
{
if(BytesReturned> 0)
{
while(TRUE)
{
char pcfilename[MAX_PATH];
memset(pcfilename , 0, MAX_PATH );
WideCharToMultiByte( CP_ACP,0,pNotify->FileName,pNotify->FileNameLength/2,pcfilename,MAX_PATH,NULL,NULL );
HANDLE hFile = CreateFile(pcfilename,GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE)
OutputDebugString("INVALID_HANDLE_VALUE");
CloseHandle(hFile);
}
}
}
}
这段代码是写在一个线程里的,用于监控一个文件夹下有没有新增的文件,如果有新增的文件则进行一些处理
现在碰到的问题是从本机的硬盘上拷背文件到指定的文件夹里没有问题,但从网络上其他电脑的共享文件夹中拷文件过来CreateFile就会返回INVALID_HANDLE_VALUE
更奇怪的是,如果用F5进入Debug调试,即使没有断点,从其他电脑共享文件夹中拷过来的文件CreateFile是成功的,但直接F7运行无论是Release还是Debug都又返回INVALID_HANDLE_VALUE,这是怎么回事?