source: trunk/src/kernel32/hmdevio.h@ 7029

Last change on this file since 7029 was 5905, checked in by sandervl, 24 years ago

plugin driver dll updates

File size: 5.8 KB
Line 
1/* $Id: hmdevio.h,v 1.3 2001-06-04 21:18:40 sandervl Exp $ */
2
3#ifndef __DEVIO_H__
4#define __DEVIO_H__
5
6/*****************************************************************************
7 * Includes *
8 *****************************************************************************/
9
10#include <handlemanager.h>
11#include "HMDevice.h"
12#include "HMObjects.h"
13
14#ifndef _OS2WIN_H
15#define GENERIC_READ 0x80000000
16#define GENERIC_WRITE 0x40000000
17#define GENERIC_EXECUTE 0x20000000
18#define GENERIC_ALL 0x10000000
19
20#define FILE_SHARE_READ 0x00000001
21#define FILE_SHARE_WRITE 0x00000002
22#define FILE_ATTRIBUTE_READONLY 0x00000001
23#define FILE_ATTRIBUTE_HIDDEN 0x00000002
24#define FILE_ATTRIBUTE_SYSTEM 0x00000004
25#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
26#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
27#define FILE_ATTRIBUTE_NORMAL 0x00000080
28#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
29#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200
30#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400
31#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
32#define FILE_ATTRIBUTE_HAS_EMBEDDING 0x00001000
33
34#define FILE_SHARE_READ 0x00000001
35#define FILE_SHARE_WRITE 0x00000002
36
37#define IOCTL_GPD_READ_PORT_UCHAR 0x900
38#define IOCTL_GPD_READ_PORT_USHORT 0x901
39#define IOCTL_GPD_READ_PORT_ULONG 0x902
40#define IOCTL_GPD_WRITE_PORT_UCHAR 0x910
41#define IOCTL_GPD_WRITE_PORT_USHORT 0x911
42#define IOCTL_GPD_WRITE_PORT_ULONG 0x912
43
44#define IOCTL_MAPMEM_MAP_USER_PHYSICAL_MEMORY 0x800
45#define IOCTL_MAPMEM_UNMAP_USER_PHYSICAL_MEMORY 0x801
46
47typedef struct _GENPORT_WRITE_INPUT {
48 ULONG PortNumber;
49 union {
50 ULONG LongData;
51 USHORT ShortData;
52 UCHAR CharData;
53 };
54} GENPORT_WRITE_INPUT;
55
56typedef enum _INTERFACE_TYPE {
57 InterfaceTypeUndefined = -1,
58 Internal,
59 Isa,
60 Eisa,
61 MicroChannel,
62 TurboChannel,
63 PCIBus,
64 VMEBus,
65 NuBus,
66 PCMCIABus,
67 CBus,
68 MPIBus,
69 MPSABus,
70 ProcessorInternal,
71 InternalPowerBus,
72 PNPISABus,
73 MaximumInterfaceType
74}INTERFACE_TYPE, *PINTERFACE_TYPE;
75
76typedef LARGE_INTEGER PHYSICAL_ADDRESS;
77
78typedef struct
79{
80 INTERFACE_TYPE InterfaceType;
81 ULONG BusNumber;
82 PHYSICAL_ADDRESS BusAddress;
83 ULONG AddressSpace;
84 ULONG Length;
85
86} PHYSICAL_MEMORY_INFO, *PPHYSICAL_MEMORY_INFO;
87
88typedef struct _MapDevRequest
89{
90 DWORD mdr_ServiceID;
91 LPVOID mdr_PhysicalAddress;
92 DWORD mdr_SizeInBytes;
93 LPVOID mdr_LinearAddress;
94 WORD mdr_Selector;
95 WORD mdr_Status;
96} MAPDEVREQUEST, *PMAPDEVREQUEST;
97
98#endif
99
100typedef BOOL (* WINIOCTL)(HANDLE hDevice, DWORD dwIoControlCode,
101 LPVOID lpInBuffer, DWORD nInBufferSize,
102 LPVOID lpOutBuffer, DWORD nOutBufferSize,
103 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
104
105typedef HANDLE (* WIN32API DrvOpen)(DWORD dwAccess, DWORD dwShare);
106typedef void (* WIN32API DrvClose)(HANDLE hDevice);
107typedef BOOL (* WIN32API DrvIOCtl)(HANDLE hDevice, DWORD dwIoControlCode,
108 LPVOID lpInBuffer, DWORD nInBufferSize,
109 LPVOID lpOutBuffer, DWORD nOutBufferSize,
110 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
111
112typedef struct {
113 char szWin32Name[32];
114 char szOS2Name[32];
115 BOOL fCreateFile;
116 DWORD hDevice;
117 WINIOCTL devIOCtl;
118} WIN32DRV;
119
120/*****************************************************************************
121 * Structures *
122 *****************************************************************************/
123
124class HMDeviceDriver : public HMDeviceKernelObjectClass
125{
126public:
127 HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate, WINIOCTL pDevIOCtl);
128 HMDeviceDriver(LPCSTR lpDeviceName);
129
130 /* this is a handler method for calls to CreateFile() */
131 virtual DWORD CreateFile (LPCSTR lpFileName,
132 PHMHANDLEDATA pHMHandleData,
133 PVOID lpSecurityAttributes,
134 PHMHANDLEDATA pHMHandleDataTemplate);
135
136 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
137
138 /* this is a handler method for calls to DeviceIoControl() */
139 virtual BOOL DeviceIoControl (PHMHANDLEDATA pHMHandleData, DWORD dwIoControlCode,
140 LPVOID lpInBuffer, DWORD nInBufferSize,
141 LPVOID lpOutBuffer, DWORD nOutBufferSize,
142 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
143private:
144 BOOL fCreateFile;
145 LPSTR szOS2Name;
146 WINIOCTL devIOCtl;
147};
148
149class HMCustomDriver : public HMDeviceDriver
150
151{
152public:
153 HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName);
154 virtual ~HMCustomDriver();
155
156 /* this is a handler method for calls to CreateFile() */
157 virtual DWORD CreateFile (LPCSTR lpFileName,
158 PHMHANDLEDATA pHMHandleData,
159 PVOID lpSecurityAttributes,
160 PHMHANDLEDATA pHMHandleDataTemplate);
161
162 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
163
164 /* this is a handler method for calls to DeviceIoControl() */
165 virtual BOOL DeviceIoControl (PHMHANDLEDATA pHMHandleData, DWORD dwIoControlCode,
166 LPVOID lpInBuffer, DWORD nInBufferSize,
167 LPVOID lpOutBuffer, DWORD nOutBufferSize,
168 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
169private:
170 DrvOpen driverOpen;
171 DrvClose driverClose;
172 DrvIOCtl driverIOCtl;
173 HINSTANCE hDrvDll;
174};
175
176void RegisterDevices();
177
178
179#endif
Note: See TracBrowser for help on using the repository browser.