2,586
社区成员
发帖
与我相关
我的任务
分享
int WINAPI WriteData(HANDLE hComm,char *cData,unsigned long ulLength,unsigned long * BytesWritten)
{
ComInfoList *p;
BOOL bStat;
p = CheckList(pHead,hComm);
if(p == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}
if(p->hReader == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}
if(p->myoverlapped.hEvent == NULL)
{
*BytesWritten = 0;
return SEND_DATA_FAIL;
}
if(!WriteFile(p->hComm,cData,ulLength,BytesWritten,&p->myoverlapped))
{
if(GetLastError() == ERROR_IO_PENDING)
{
bStat = WaitForSingleObject(p->myoverlapped.hEvent,INFINITE);
switch(bStat)
{
case WAIT_OBJECT_0:
if(!GetOverlappedResult(p->hComm,&p->myoverlapped,BytesWritten,FALSE))
{
return SEND_DATA_FAIL;
}
break;
default:
return SEND_DATA_FAIL;
break;
}
}
else
{
return SEND_DATA_FAIL;
}
}
return 0;
}