ZeroMemory(&(PerHandleData->Overlapped),sizeof(PerHandleData->Overlapped) );
PerHandleData->DataBuf.len = DATA_BUFSIZE;
PerHandleData->DataBuf.buf = PerHandleData->Buffer;
PerHandleData->BytesRECV = 0;
PerHandleData->BytesSEND = 0;
PerHandleData->Socket = sAccept;
DWORD Flags = 0;
DWORD RecvBytes;

BOOL bSuccess = PostQueuedCompletionStatus(CompletionPort, 0, 
(DWORD)&PerHandleData, &(PerHandleData->Overlapped));
if ( (!bSuccess && GetLastError( ) != ERROR_IO_PENDING))
线程:
GetQueuedCompletionStatus(pThis->CompletionPort,&BytesTransferred,(LPDWORD)&PerHandleData,&pOverlapPlus,INFINITE)
在线程中得到的PerHandleData的东西都是乱的?为什么?

解决方案 »

  1.   

    BOOL bSuccess = PostQueuedCompletionStatus(CompletionPort, 0, 
    (DWORD)PerHandleData, &(PerHandleData->Overlapped));
    if ( (!bSuccess && GetLastError( ) != ERROR_IO_PENDING))
      

  2.   

    还是不行,PerHandleData->Socket都是错的
      

  3.   

    You can call the PostQueuedCompletionStatus function to post an completion packet to an completion port. The completion packet will satisfy an outstanding call to the GetQueuedCompletionStatus function.