C++ WaitForSingleObject提供的句柄无效
WaitForsingleobject返回无效句柄,但我不明白为什么…我认为应该这样写:C++ WaitForSingleObject提供的句柄无效,c++,asynchronous,waitforsingleobject,C++,Asynchronous,Waitforsingleobject,WaitForsingleobject返回无效句柄,但我不明白为什么…我认为应该这样写: h=CreateFile("c:\\test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_READONLY|FILE_FLAG_OVERLAPPED,NULL); OVERLAPPED ol2; memset(&ol2,0,sizeof(OVERLAPPED)); ol2.hEvent=
h=CreateFile("c:\\test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_READONLY|FILE_FLAG_OVERLAPPED,NULL);
OVERLAPPED ol2;
memset(&ol2,0,sizeof(OVERLAPPED));
ol2.hEvent=CreateEvent(NULL,false,false,NULL);
if(!ReadFile(h,iobuffer+pointsize,value,NULL,&ol2))
printf("Last Error %u",GetLastError());
if(WaitForSingleObject(&ol2.hEvent,INFINITE)!=0){
printf("Last Error %u \n",GetLastError());
}
请注意删除的&before ol2.hEvent我认为应该写:
h=CreateFile("c:\\test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_READONLY|FILE_FLAG_OVERLAPPED,NULL);
OVERLAPPED ol2;
memset(&ol2,0,sizeof(OVERLAPPED));
ol2.hEvent=CreateEvent(NULL,false,false,NULL);
if(!ReadFile(h,iobuffer+pointsize,value,NULL,&ol2))
printf("Last Error %u",GetLastError());
if(WaitForSingleObject(&ol2.hEvent,INFINITE)!=0){
printf("Last Error %u \n",GetLastError());
}
注意删除的&before ol2.hEvent确实:
WaitForSingleObject
采用HANDLE
,而不是HANDLE[]
如WaitForMultipleObjects
确实:WaitForSingleObject
采用HANDLE
而不是如WaitForMultipleObjects