GetQueuedCompletionStatus返回值是FALSE,GetLastError = 1450(系统资源不足,无法完成请求的服务。 ),请问是什么问题?
UINT __stdcall CNetLayer::WorkThread(PVOID lpVoid)
{
CNetLayer* pNetlayer = (CNetLayer*) lpVoid;
IClient* pClient = NULL;
CIoData* pIoData =NULL;
DWORD dwByteNums = 0;
while (1)
{
try
{
BOOL flag = ::GetQueuedCompletionStatus(pNetlayer->m_hIocp, &dwByteNums,
(LPDWORD)&pClient, (LPOVERLAPPED*)&pIoData, INFINITE);
//process exit thread.
if (dwByteNums ==0 && pClient == NULL && (DWORD)pIoData == -1)
break;
if (!flag || !pIoData)
{
DWORD dwErr = GetLastError();
//请问怎么在一个用户的计算机(win2kServer)老是出现1450错误.而且是客户端连接上,后发现数据是就会出现这个问题.
SDG_WriteLog("GetQueuedCompletionStatus:error:%d,bytenum:%d\r\n", dwErr, dwByteNums);
if (pIoData != NULL && dwErr == 64 && dwByteNums == 0)
pNetlayer->OnClose(pIoData, 0);
continue ;
}
if (dwByteNums == 0)
{
pNetlayer->OnClose(pIoData, 0);
continue ;
}
pIoData->pClient = pClient;
switch(pIoData->event)
{
case EVENT_RECV:
pNetlayer->OnRecv(pIoData, dwByteNums);
break;
case EVENT_SEND:
pNetlayer->OnSend(pIoData, dwByteNums);
break;
default:
OutputDebugString("package cmd have error!\n");
break;
}
}
catch (...) { SDG_WriteLog("WorkThread have error.\r\n"); }
}
OutputDebugString("exit work thread\n");
return 0;
}