Changeset 7245 for trunk/src


Ignore:
Timestamp:
Oct 28, 2001, 1:48:04 PM (24 years ago)
Author:
sandervl
Message:

RegisterCustomDriver added

Location:
trunk/src/kernel32
Files:
2 edited

Legend:

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

    r6086 r7245  
    1 /* $Id: hmdevio.cpp,v 1.14 2001-06-23 19:43:49 sandervl Exp $ */
     1/* $Id: hmdevio.cpp,v 1.15 2001-10-28 12:48:04 sandervl Exp $ */
    22
    33/*
     
    130130//******************************************************************************
    131131//******************************************************************************
     132BOOL WIN32API RegisterCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
     133                                   PFNDRVIOCTL pfnDriverIOCtl, LPCSTR lpDeviceName)
     134{
     135 HMDeviceDriver *driver;
     136 DWORD rc;
     137 
     138    driver = new HMCustomDriver(pfnDriverOpen, pfnDriverClose, pfnDriverIOCtl, lpDeviceName);
     139    if(driver == NULL) {
     140        DebugInt3();
     141        return FALSE;
     142    }
     143    rc = HMDeviceRegister((LPSTR)lpDeviceName, driver);
     144    if (rc != NO_ERROR) {                                /* check for errors */
     145        dprintf(("KERNEL32:RegisterDevices: registering %s failed with %u.\n", lpDeviceName, rc));
     146        return FALSE;
     147    }
     148    return TRUE;
     149}
     150//******************************************************************************
     151//******************************************************************************
    132152HMDeviceDriver::HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate,
    133153                               WINIOCTL pDevIOCtl)
     
    438458//******************************************************************************
    439459HMCustomDriver::HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName)
    440                 : HMDeviceDriver(lpDeviceName)
     460                : HMDeviceDriver(lpDeviceName), hDrvDll(0)
    441461{
    442462    hDrvDll = hInstance ;
     
    447467//******************************************************************************
    448468//******************************************************************************
     469HMCustomDriver::HMCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
     470                               PFNDRVIOCTL pfnDriverIOCtl, LPCSTR lpDeviceName)
     471                : HMDeviceDriver(lpDeviceName), hDrvDll(0)
     472{
     473    driverOpen  = pfnDriverOpen;
     474    driverClose = pfnDriverClose;
     475    driverIOCtl = pfnDriverIOCtl;
     476}
     477//******************************************************************************
     478//******************************************************************************
    449479HMCustomDriver::~HMCustomDriver()
    450480{
    451    FreeLibrary(hDrvDll);
     481   if(hDrvDll) FreeLibrary(hDrvDll);
    452482}
    453483//******************************************************************************
  • trunk/src/kernel32/hmdevio.h

    r5905 r7245  
    1 /* $Id: hmdevio.h,v 1.3 2001-06-04 21:18:40 sandervl Exp $ */
     1/* $Id: hmdevio.h,v 1.4 2001-10-28 12:48:04 sandervl Exp $ */
    22
    33#ifndef __DEVIO_H__
     
    1111#include "HMDevice.h"
    1212#include "HMObjects.h"
     13#include <custombuild.h>
    1314
    1415#ifndef _OS2WIN_H
     
    103104              LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
    104105
    105 typedef HANDLE (* WIN32API DrvOpen)(DWORD dwAccess, DWORD dwShare);
    106 typedef void   (* WIN32API DrvClose)(HANDLE hDevice);
    107 typedef BOOL   (* WIN32API DrvIOCtl)(HANDLE hDevice, DWORD dwIoControlCode,
    108                        LPVOID lpInBuffer, DWORD nInBufferSize,
    109                        LPVOID lpOutBuffer, DWORD nOutBufferSize,
    110                        LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
    111 
    112106typedef struct {
    113107    char     szWin32Name[32];
     
    152146public:
    153147  HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName);
     148  HMCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
     149                 PFNDRVIOCTL pfnDriverIOCtl, LPCSTR lpDeviceName);
     150
    154151  virtual ~HMCustomDriver();
    155152
     
    168165                                     LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
    169166private:
    170   DrvOpen  driverOpen;
    171   DrvClose driverClose;
    172   DrvIOCtl driverIOCtl;
     167  PFNDRVOPEN  driverOpen;
     168  PFNDRVCLOSE driverClose;
     169  PFNDRVIOCTL driverIOCtl;
    173170  HINSTANCE hDrvDll;
    174171};
Note: See TracChangeset for help on using the changeset viewer.