Ignore:
Timestamp:
Dec 10, 2001, 1:55:13 PM (24 years ago)
Author:
sandervl
Message:

overlapped io updates & fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmcomm.cpp

    r7596 r7604  
    1 /* $Id: hmcomm.cpp,v 1.32 2001-12-09 21:19:28 sandervl Exp $ */
     1/* $Id: hmcomm.cpp,v 1.33 2001-12-10 12:55:12 sandervl Exp $ */
    22
    33/*
     
    238238            comnr = comname[3] - '1';
    239239
    240             if(handler[comnr] == NULL) {
     240            if(handler[comnr] == NULL)
     241            {
    241242                try {
    242243                    handler[comnr] = new OverlappedIOHandler(CommReadIOHandler, CommWriteIOHandler, CommPollIOHandler);
     
    272273 * Author    : SvL
    273274 *****************************************************************************/
    274 
    275275DWORD HMDeviceCommClass::GetFileType(PHMHANDLEDATA pHMHandleData)
    276276{
     
    421421        dwEvent |= (COMEvt&0x0080)? EV_ERR:0;
    422422        dwEvent |= (COMEvt&0x0100)? EV_RING:0;
     423 
     424        if((dwEvent & EV_RXCHAR) && (dwMask & EV_RXCHAR))
     425        {
     426            //check if there's really data in the in queue
     427            RXQUEUE qInfo;
     428            ULONG ulLen = sizeof(qInfo);
     429            ULONG rc = OSLibDosDevIOCtl(pHMHandleData->hHMHandle,
     430                                        IOCTL_ASYNC,
     431                                        ASYNC_GETINQUECOUNT,
     432                                        0,0,0,
     433                                        &qInfo,ulLen,&ulLen);
     434            if(qInfo.cch == 0) {
     435                dprintf(("!WARNING!: CommPollIOHandler -> EV_RXCHAR but no DATA"));
     436                dwEvent &= ~EV_RXCHAR;
     437            }
     438        }
    423439        if((dwEvent & dwMask)) {
    424440            dprintf(("CommPollIOHandler: event(s) %x occured", (dwEvent & dwMask)));
     
    726742  PHMDEVCOMDATA pDevData = (PHMDEVCOMDATA)pHMHandleData->lpHandlerData;
    727743
    728     dprintf(("KERNEL32-WARNING: HMDeviceCommClass::GetOverlappedResult(%08xh,%08xh,%08xh,%08xh)",
     744    dprintf(("KERNEL32-HMDeviceCommClass: HMDeviceCommClass::GetOverlappedResult(%08xh,%08xh,%08xh,%08xh)",
    729745             pHMHandleData->hHMHandle, lpOverlapped, lpcbTransfer, fWait));
    730746
Note: See TracChangeset for help on using the changeset viewer.