Changeset 7763


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

Custom device driver changes for driver instance pointer

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/custombuild.h

    r7756 r7763  
    1414
    1515
    16 typedef HANDLE (* WIN32API PFNDRVOPEN)(DWORD dwAccess, DWORD dwShare, DWORD dwFlags, PVOID *ppDriverData);
    17 typedef void   (* WIN32API PFNDRVCLOSE)(HANDLE hDevice, DWORD dwFlags, PVOID lpDriverData);
    18 typedef BOOL   (* WIN32API PFNDRVIOCTL)(HANDLE hDevice, DWORD dwFlags, DWORD dwIoControlCode,
     16typedef HANDLE (* WIN32API PFNDRVOPEN)(LPVOID lpDriverData, DWORD dwAccess, DWORD dwShare, DWORD dwFlags, PVOID *ppHandleData);
     17typedef void   (* WIN32API PFNDRVCLOSE)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, PVOID lpHandleData);
     18typedef BOOL   (* WIN32API PFNDRVIOCTL)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, DWORD dwIoControlCode,
    1919                                        LPVOID lpInBuffer, DWORD nInBufferSize,
    2020                                        LPVOID lpOutBuffer, DWORD nOutBufferSize,
    2121                                        LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped,
    22                                         PVOID lpDriverData);
     22                                        LPVOID lpHandleData);
    2323
    24 typedef BOOL   (* WIN32API PFNDRVREAD)(HANDLE        hDevice,
     24typedef BOOL   (* WIN32API PFNDRVREAD)(LPVOID        lpDriverData,
     25                                       HANDLE        hDevice,
    2526                                       DWORD         dwFlags,
    2627                                       LPCVOID       lpBuffer,
     
    2930                                       LPOVERLAPPED  lpOverlapped,
    3031                                       LPOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
    31                                        PVOID         lpDriverData);
     32                                       LPVOID        lpHandleData);
    3233
    33 typedef BOOL   (* WIN32API PFNDRVWRITE)(HANDLE        hDevice,
     34typedef BOOL   (* WIN32API PFNDRVWRITE)(LPVOID        lpDriverData,
     35                                        HANDLE        hDevice,
    3436                                        DWORD         dwFlags,
    3537                                        LPCVOID       lpBuffer,
     
    3840                                        LPOVERLAPPED  lpOverlapped,
    3941                                        LPOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine,
    40                                         PVOID         lpDriverData);
     42                                        LPVOID        lpHandleData);
    4143
    42 typedef BOOL   (* WIN32API PFNDRVCANCELIO)(HANDLE hDevice, DWORD dwFlags, PVOID lpDriverData);
    43 typedef DWORD  (* WIN32API PFNDRVGETOVERLAPPEDRESULT)(HANDLE        hDevice,
     44typedef BOOL   (* WIN32API PFNDRVCANCELIO)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, PVOID lpHandleData);
     45typedef DWORD  (* WIN32API PFNDRVGETOVERLAPPEDRESULT)(LPVOID        lpDriverData,
     46                                                      HANDLE        hDevice,
    4447                                                      DWORD         dwFlags,
    4548                                                      LPOVERLAPPED  lpOverlapped,
    4649                                                      LPDWORD       lpcbTransfer,
    4750                                                      BOOL          fWait,
    48                                                       PVOID         lpDriverData);
     51                                                      LPVOID        lpHandleData);
    4952
    5053BOOL WIN32API RegisterCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
     
    5255                                   PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
    5356                                   PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
    54                                    LPCSTR lpDeviceName);
     57                                   LPCSTR lpDriverName, LPVOID lpDriverData);
     58
     59BOOL WIN32API UnRegisterCustomDriver(LPCSTR lpDriverName);
    5560
    5661
  • 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//******************************************************************************
  • trunk/src/kernel32/hmdevio.h

    r7630 r7763  
    1 /* $Id: hmdevio.h,v 1.9 2001-12-14 10:22:38 sandervl Exp $ */
     1/* $Id: hmdevio.h,v 1.10 2002-01-12 10:28:17 sandervl Exp $ */
    22
    33#ifndef __DEVIO_H__
     
    145145{
    146146public:
    147   HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName);
     147  HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName, LPVOID lpDriverData);
    148148  HMCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
    149149                 PFNDRVIOCTL pfnDriverIOCtl, PFNDRVREAD pfnDriverRead,
    150150                 PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
    151151                 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
    152                  LPCSTR lpDeviceName);
     152                 LPCSTR lpDeviceName, LPVOID lpDriverData);
    153153
    154154  virtual ~HMCustomDriver();
     
    201201  PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult;
    202202  HINSTANCE      hDrvDll;
     203  LPVOID         lpDriverData;
    203204};
    204205
Note: See TracChangeset for help on using the changeset viewer.