VirtualBox

Changeset 57910 in vbox


Ignore:
Timestamp:
Sep 26, 2015 5:24:17 PM (9 years ago)
Author:
vboxsync
Message:

DrvHostSerial.cpp: Should call GetOverlappedResult if ReadFile returns ERROR_IO_PENDING. Observed with Free Virtual Serial Ports v3.20.00.0545 on 64-bit Windows 10.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Serial/DrvHostSerial.cpp

    r57358 r57910  
    474474    {
    475475        int rc = RTSemEventWait(pThis->SendSem, RT_INDEFINITE_WAIT);
    476         if (RT_FAILURE(rc))
    477             break;
     476        AssertRCBreak(rc);
    478477
    479478        /*
     
    770769                if (!ReadFile(pThis->hDeviceFile, abBuffer, sizeof(abBuffer), &dwNumberOfBytesTransferred, &pThis->overlappedRecv))
    771770                {
    772                     rcThread = RTErrConvertFromWin32(GetLastError());
    773                     LogRel(("HostSerial#%d: Read failed with error %Rrc; terminating the worker thread.\n", pDrvIns->iInstance, rcThread));
    774                     break;
     771                    dwRet = GetLastError();
     772                    if (dwRet == ERROR_IO_PENDING)
     773                    {
     774                        if (GetOverlappedResult(pThis->hDeviceFile, &pThis->overlappedRecv, &dwNumberOfBytesTransferred, TRUE))
     775                            dwRet = NO_ERROR;
     776                        else
     777                            dwRet = GetLastError();
     778                    }
     779                    if (dwRet != NO_ERROR)
     780                    {
     781                        rcThread = RTErrConvertFromWin32(dwRet);
     782                        LogRel(("HostSerial#%d: Read failed with error %Rrc; terminating the worker thread.\n", pDrvIns->iInstance, rcThread));
     783                        break;
     784                    }
    775785                }
    776786                cbRemaining = dwNumberOfBytesTransferred;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette