例外を発生させずに同じ ComDev で ReadFile を呼び出せるように、WriteFile 関数が UART への書き込みを完了しているかどうかを確認したいと考えています。
書き込みが完了する前にWriteFile 関数が返される可能性があるようです。
BOOL WriteCommBlock(HANDLE * pComDev, char *pBuffer , int BytesToWrite)
{
while(fComPortInUse){}
fComPortInUse = 1;
BOOL bWriteStat = 0;
DWORD BytesWritten = 0;
COMSTAT ComStat = {0};
OVERLAPPED osWrite = {0,0,0};
if(WriteFile(*pComDev,pBuffer,BytesToWrite,&BytesWritten,&osWrite) == FALSE)
{
short Errorcode = GetLastError();
if( Errorcode != ERROR_IO_PENDING )
short breakpoint = 5; // Error
Sleep(1000); // complete write operation TBD
fComPortInUse = 0;
return (FALSE);
}
fComPortInUse = 0;
return (TRUE);
}
回避策として Sleep(1000) を使用しましたが、適切な時間を待つにはどうすればよいですか?