Ignore:
Timestamp:
Jan 12, 2002, 11:28:33 AM (24 years ago)
Author:
sandervl
Message:

Custom device driver changes for driver instance pointer

File:
1 edited

Legend:

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

    r7756 r7763  
    1 /* $Id: hmdevio.cpp,v 1.25 2002-01-09 16:13:17 sandervl Exp $ */
     1/* $Id: hmdevio.cpp,v 1.26 2002-01-12 10:28:17 sandervl Exp $ */
    22
    33/*
     
    111111                    {
    112112                        sprintf(szDrvName, "\\\\.\\%s", szKeyName);
    113                         driver = new HMCustomDriver(hDrvDll, szDrvName);
     113                        driver = new HMCustomDriver(hDrvDll, szDrvName, NULL);
    114114
    115115                        rc = HMDeviceRegister(szDrvName, driver);
     
    136136                                   PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
    137137                                   PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
    138                                    LPCSTR lpDeviceName)
     138                                   LPCSTR lpDeviceName, LPVOID lpDriverData)
    139139{
    140140 HMDeviceDriver *driver;
    141141 DWORD rc;
    142142 
    143     driver = new HMCustomDriver(pfnDriverOpen, pfnDriverClose, pfnDriverIOCtl, pfnDriverRead, pfnDriverWrite, pfnDriverCancelIo, pfnDriverGetOverlappedResult, lpDeviceName);
     143    driver = new HMCustomDriver(pfnDriverOpen, pfnDriverClose, pfnDriverIOCtl, pfnDriverRead, pfnDriverWrite, pfnDriverCancelIo, pfnDriverGetOverlappedResult, lpDeviceName, lpDriverData);
    144144    if(driver == NULL) {
    145145        DebugInt3();
     
    389389//******************************************************************************
    390390//******************************************************************************
    391 HMCustomDriver::HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName)
    392                 : HMDeviceDriver(lpDeviceName), hDrvDll(0)
     391HMCustomDriver::HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName, LPVOID lpDriverData)
     392                : HMDeviceDriver(lpDeviceName), hDrvDll(0), lpDriverData(NULL)
    393393{
    394394    hDrvDll = hInstance ;
     
    405405                               PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
    406406                               PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
    407                                LPCSTR lpDeviceName)
     407                               LPCSTR lpDeviceName, LPVOID lpDriverData)
    408408                : HMDeviceDriver(lpDeviceName), hDrvDll(0)
    409409{
     
    418418    this->pfnDriverCancelIo = pfnDriverCancelIo;
    419419    this->pfnDriverGetOverlappedResult = pfnDriverGetOverlappedResult;
     420    this->lpDriverData      = lpDriverData;
    420421}
    421422//******************************************************************************
     
    432433                                  PHMHANDLEDATA pHMHandleDataTemplate)
    433434{
    434    pHMHandleData->hHMHandle = pfnDriverOpen(pHMHandleData->dwAccess, pHMHandleData->dwShare, pHMHandleData->dwFlags, (PVOID *)&pHMHandleData->dwUserData);
     435   pHMHandleData->hHMHandle = pfnDriverOpen(lpDriverData, pHMHandleData->dwAccess, pHMHandleData->dwShare, pHMHandleData->dwFlags, (PVOID *)&pHMHandleData->dwUserData);
    435436   if(pHMHandleData->hHMHandle == INVALID_HANDLE_VALUE_W) {
    436437       return GetLastError();
     
    443444{
    444445   if(pHMHandleData->hHMHandle) {
    445         pfnDriverClose(pHMHandleData->hHMHandle, pHMHandleData->dwFlags, (PVOID)pHMHandleData->dwUserData);
     446        pfnDriverClose(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags, (LPVOID)pHMHandleData->dwUserData);
    446447   }
    447448   pHMHandleData->hHMHandle = 0;
     
    463464   }
    464465
    465    ret = pfnDriverIOCtl(pHMHandleData->hHMHandle, pHMHandleData->dwFlags, dwIoControlCode, lpInBuffer, nInBufferSize,
    466                         lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped, (PVOID)pHMHandleData->dwUserData);
     466   ret = pfnDriverIOCtl(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags, dwIoControlCode, lpInBuffer, nInBufferSize,
     467                        lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped, (LPVOID)pHMHandleData->dwUserData);
    467468   dprintf(("DeviceIoControl %x returned %d", dwIoControlCode, ret));
    468469   return ret;
     
    499500       return FALSE;
    500501   }
    501    ret = pfnDriverRead(pHMHandleData->hHMHandle, pHMHandleData->dwFlags, lpBuffer, nNumberOfBytesToRead,
     502   ret = pfnDriverRead(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags, lpBuffer, nNumberOfBytesToRead,
    502503                      lpNumberOfBytesRead, lpOverlapped, lpCompletionRoutine,
    503                       (PVOID)pHMHandleData->dwUserData);
     504                      (LPVOID)pHMHandleData->dwUserData);
    504505   dprintf(("pfnDriverRead %x %x %x %x %x %x returned %x", pHMHandleData->hHMHandle, lpBuffer, nNumberOfBytesToRead,
    505506             lpNumberOfBytesRead, lpOverlapped, lpCompletionRoutine, ret));
     
    537538       return FALSE;
    538539   }
    539    ret = pfnDriverWrite(pHMHandleData->hHMHandle, pHMHandleData->dwFlags, lpBuffer, nNumberOfBytesToWrite,
     540   ret = pfnDriverWrite(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags, lpBuffer, nNumberOfBytesToWrite,
    540541                        lpNumberOfBytesWritten, lpOverlapped, lpCompletionRoutine,
    541                         (PVOID)pHMHandleData->dwUserData);
     542                        (LPVOID)pHMHandleData->dwUserData);
    542543   dprintf(("pfnDriverWrite %x %x %x %x %x %x returned %x", pHMHandleData->hHMHandle, lpBuffer, nNumberOfBytesToWrite,
    543544            lpNumberOfBytesWritten, lpOverlapped, lpCompletionRoutine, ret));
     
    563564       return FALSE;
    564565   }
    565    ret = pfnDriverCancelIo(pHMHandleData->hHMHandle, pHMHandleData->dwFlags, (PVOID)pHMHandleData->dwUserData);
     566   ret = pfnDriverCancelIo(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags, (LPVOID)pHMHandleData->dwUserData);
    566567   dprintf(("pfnDriverCancelIo %x returned %x", pHMHandleData->hHMHandle, ret));
    567568   return ret;
     
    602603        return FALSE;
    603604    }
    604     return pfnDriverGetOverlappedResult(pHMHandleData->hHMHandle, pHMHandleData->dwFlags,
    605                                         lpOverlapped, lpcbTransfer, fWait, (PVOID)pHMHandleData->dwUserData);
     605    return pfnDriverGetOverlappedResult(lpDriverData, pHMHandleData->hHMHandle, pHMHandleData->dwFlags,
     606                                        lpOverlapped, lpcbTransfer, fWait, (LPVOID)pHMHandleData->dwUserData);
    606607}
    607608//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.