Ignore:
Timestamp:
Dec 14, 2001, 1:45:49 PM (24 years ago)
Author:
sandervl
Message:

enabled overlapped io for custom device drivers

File:
1 edited

Legend:

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

    r7605 r7631  
    1 /* $Id: overlappedio.cpp,v 1.12 2001-12-10 14:04:24 sandervl Exp $ */
     1/* $Id: overlappedio.cpp,v 1.13 2001-12-14 12:44:57 sandervl Exp $ */
    22
    33/*
     
    1616#include <handlemanager.h>
    1717#include <heapstring.h>
    18 #include "overlappedio.h"
     18#include <overlappedio.h>
    1919#include "oslibdos.h"
    2020
     
    239239                else lpRequest->dwLastError = lpWriteHandler(lpRequest, &dwResult, NULL);
    240240
    241                 lpOverlapped->Internal     = lpRequest->dwLastError;
    242                 lpOverlapped->InternalHigh = dwResult;
    243                 if(lpRequest->lpdwResult) {
    244                     *lpRequest->lpdwResult = dwResult;
     241                if(!lpRequest->fCancelled)
     242                {
     243                    lpOverlapped->Internal     = lpRequest->dwLastError;
     244                    lpOverlapped->InternalHigh = dwResult;
     245                    if(lpRequest->lpdwResult) {
     246                        *lpRequest->lpdwResult = dwResult;
     247                    }
     248#ifdef DEBUG
     249                    if(lpRequest->dwAsyncType == ASYNCIO_READ) {
     250                         dprintf(("ASYNCIO_READ %x finished; result %x, last error %d", lpOverlapped, dwResult, lpRequest->dwLastError));
     251                    }
     252                    else dprintf(("ASYNCIO_WRITE %x finished; result %x, last error %d", lpOverlapped, dwResult, lpRequest->dwLastError));
     253#endif
     254                    //wake up user thread
     255                    ::SetEvent(lpOverlapped->hEvent);
    245256                }
    246 #ifdef DEBUG
    247                 if(lpRequest->dwAsyncType == ASYNCIO_READ) {
    248                      dprintf(("ASYNCIO_READ %x finished; result %x, last error %d", lpOverlapped, dwResult, lpRequest->dwLastError));
    249                 }
    250                 else dprintf(("ASYNCIO_WRITE %x finished; result %x, last error %d", lpOverlapped, dwResult, lpRequest->dwLastError));
    251 #endif
    252                 //wake up user thread
    253                 ::SetEvent(lpOverlapped->hEvent);
    254257                break;
    255258
     
    279282                }
    280283                //Don't access the overlapped & result memory when CancelIo was used to cancel the operation
    281                 if(ret == WAIT_TIMEOUT)
     284                if(ret == WAIT_TIMEOUT && !lpRequest->fCancelled)
    282285                {
    283286                    dprintf(("ASYNCIO_POLL %x: result %x, last error %d", lpOverlapped, dwResult, lpRequest->dwLastError));
Note: See TracChangeset for help on using the changeset viewer.