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

Last change on this file since 22018 was 8840, checked in by sandervl, 23 years ago

minor updates

File size: 7.2 KB
Line 
1/* $Id: hmdevio.h,v 1.11 2002-07-05 17:59:29 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#include <custombuild.h>
14
15#ifndef _OS2WIN_H
16#define GENERIC_READ 0x80000000
17#define GENERIC_WRITE 0x40000000
18#define GENERIC_EXECUTE 0x20000000
19#define GENERIC_ALL 0x10000000
20
21#define FILE_SHARE_READ 0x00000001
22#define FILE_SHARE_WRITE 0x00000002
23#define FILE_ATTRIBUTE_READONLY 0x00000001
24#define FILE_ATTRIBUTE_HIDDEN 0x00000002
25#define FILE_ATTRIBUTE_SYSTEM 0x00000004
26#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
27#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
28#define FILE_ATTRIBUTE_NORMAL 0x00000080
29#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
30#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200
31#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400
32#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
33#define FILE_ATTRIBUTE_HAS_EMBEDDING 0x00001000
34
35#define FILE_SHARE_READ 0x00000001
36#define FILE_SHARE_WRITE 0x00000002
37
38#define IOCTL_GPD_READ_PORT_UCHAR 0x900
39#define IOCTL_GPD_READ_PORT_USHORT 0x901
40#define IOCTL_GPD_READ_PORT_ULONG 0x902
41#define IOCTL_GPD_WRITE_PORT_UCHAR 0x910
42#define IOCTL_GPD_WRITE_PORT_USHORT 0x911
43#define IOCTL_GPD_WRITE_PORT_ULONG 0x912
44
45#define IOCTL_MAPMEM_MAP_USER_PHYSICAL_MEMORY 0x800
46#define IOCTL_MAPMEM_UNMAP_USER_PHYSICAL_MEMORY 0x801
47
48typedef struct _GENPORT_WRITE_INPUT {
49 ULONG PortNumber;
50 union {
51 ULONG LongData;
52 USHORT ShortData;
53 UCHAR CharData;
54 };
55} GENPORT_WRITE_INPUT;
56
57typedef enum _INTERFACE_TYPE {
58 InterfaceTypeUndefined = -1,
59 Internal,
60 Isa,
61 Eisa,
62 MicroChannel,
63 TurboChannel,
64 PCIBus,
65 VMEBus,
66 NuBus,
67 PCMCIABus,
68 CBus,
69 MPIBus,
70 MPSABus,
71 ProcessorInternal,
72 InternalPowerBus,
73 PNPISABus,
74 MaximumInterfaceType
75}INTERFACE_TYPE, *PINTERFACE_TYPE;
76
77typedef LARGE_INTEGER PHYSICAL_ADDRESS;
78
79typedef struct
80{
81 INTERFACE_TYPE InterfaceType;
82 ULONG BusNumber;
83 PHYSICAL_ADDRESS BusAddress;
84 ULONG AddressSpace;
85 ULONG Length;
86
87} PHYSICAL_MEMORY_INFO, *PPHYSICAL_MEMORY_INFO;
88
89typedef struct _MapDevRequest
90{
91 DWORD mdr_ServiceID;
92 LPVOID mdr_PhysicalAddress;
93 DWORD mdr_SizeInBytes;
94 LPVOID mdr_LinearAddress;
95 WORD mdr_Selector;
96 WORD mdr_Status;
97} MAPDEVREQUEST, *PMAPDEVREQUEST;
98
99#endif
100
101typedef BOOL (* WINIOCTL)(HANDLE hDevice, DWORD dwIoControlCode,
102 LPVOID lpInBuffer, DWORD nInBufferSize,
103 LPVOID lpOutBuffer, DWORD nOutBufferSize,
104 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
105
106typedef struct {
107 char szWin32Name[32];
108 char szOS2Name[32];
109 BOOL fCreateFile;
110 DWORD hDevice;
111 WINIOCTL devIOCtl;
112} WIN32DRV;
113
114/*****************************************************************************
115 * Structures *
116 *****************************************************************************/
117
118class HMDeviceDriver : public HMDeviceHandler
119{
120public:
121 HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate, WINIOCTL pDevIOCtl);
122 HMDeviceDriver(LPCSTR lpDeviceName);
123
124 /* this is a handler method for calls to CreateFile() */
125 virtual DWORD CreateFile (LPCSTR lpFileName,
126 PHMHANDLEDATA pHMHandleData,
127 PVOID lpSecurityAttributes,
128 PHMHANDLEDATA pHMHandleDataTemplate);
129
130 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
131
132 /* this is a handler method for calls to DeviceIoControl() */
133 virtual BOOL DeviceIoControl (PHMHANDLEDATA pHMHandleData, DWORD dwIoControlCode,
134 LPVOID lpInBuffer, DWORD nInBufferSize,
135 LPVOID lpOutBuffer, DWORD nOutBufferSize,
136 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
137private:
138 BOOL fCreateFile;
139 LPSTR szOS2Name;
140 WINIOCTL devIOCtl;
141};
142
143class HMCustomDriver : public HMDeviceDriver
144
145{
146public:
147 HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName, LPVOID lpDriverData);
148 HMCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
149 PFNDRVIOCTL pfnDriverIOCtl, PFNDRVREAD pfnDriverRead,
150 PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
151 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
152 LPCSTR lpDeviceName, LPVOID lpDriverData);
153
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);
169
170 /* this is a handler method for calls to ReadFile/Ex */
171 virtual BOOL ReadFile (PHMHANDLEDATA pHMHandleData,
172 LPCVOID lpBuffer,
173 DWORD nNumberOfBytesToRead,
174 LPDWORD lpNumberOfBytesRead,
175 LPOVERLAPPED lpOverlapped,
176 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
177
178 /* this is a handler method for calls to WriteFile/Ex */
179 virtual BOOL WriteFile (PHMHANDLEDATA pHMHandleData,
180 LPCVOID lpBuffer,
181 DWORD nNumberOfBytesToWrite,
182 LPDWORD lpNumberOfBytesWritten,
183 LPOVERLAPPED lpOverlapped,
184 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
185
186 virtual BOOL CancelIo (PHMHANDLEDATA pHMHandleData);
187
188 /* this is a handler method for calls to GetOverlappedResult */
189 virtual BOOL GetOverlappedResult(PHMHANDLEDATA pHMHandleData,
190 LPOVERLAPPED arg2,
191 LPDWORD arg3,
192 BOOL arg4);
193
194private:
195 PFNDRVOPEN pfnDriverOpen;
196 PFNDRVREAD pfnDriverRead;
197 PFNDRVWRITE pfnDriverWrite;
198 PFNDRVIOCTL pfnDriverIOCtl;
199 PFNDRVCLOSE pfnDriverClose;
200 PFNDRVCANCELIO pfnDriverCancelIo;
201 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult;
202 HINSTANCE hDrvDll;
203 LPVOID lpDriverData;
204};
205
206void RegisterDevices();
207
208
209#endif
Note: See TracBrowser for help on using the repository browser.