I have the following piece of code:
COMSTAT sStatus ;
DWORD dwNumBytesWritten, dwError, dwDummy ;
OVERLAPPED sOverlapData ;
if (m_hPortHandle != INVALID_HANDLE_VALUE)
{
memset(&sOverlapData, 0, sizeof(OVERLAPPED) );
sOverlapData.hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
if (!::WriteFile(m_hPortHandle, pbyBuffer, uLength,
&dwNumBytesWritten,
&sOverlapData) )
{
dwError = ::GetLastError();
if (dwError == ERROR_IO_PENDING)
{
// Wait for completion of write.
::GetOverlappedResult(m_hPortHandle, &sOverlapData,
&dwDummy, TRUE);
}