source: trunk/src/kernel32/hmdevice.h@ 1036

Last change on this file since 1036 was 780, checked in by phaller, 26 years ago

Fix: header file cleanup (win32type.h)

File size: 14.1 KB
Line 
1/* $Id: hmdevice.h,v 1.9 1999-09-01 19:12:17 phaller Exp $ */
2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 * Win32 Unified Handle Manager for OS/2
6 * 1999/06/17 PH Patrick Haller (phaller@gmx.net)
7 */
8
9#ifndef _HM_DEVICE_H_
10#define _HM_DEVICE_H_
11
12
13/*****************************************************************************
14 * Remark *
15 *****************************************************************************
16 */
17
18
19/*****************************************************************************
20 * Includes *
21 *****************************************************************************/
22
23/*****************************************************************************
24 * defines *
25 *****************************************************************************/
26
27#define HMTYPE_UNKNOWN 0
28#define HMTYPE_MEMMAP 1
29//.....
30
31/*****************************************************************************
32 * Structures *
33 *****************************************************************************/
34
35typedef struct _HMHANDLEDATA
36{
37 HANDLE hHMHandle; /* a copy of the OS/2 system handle */
38
39 DWORD dwType; /* handle type identifier */
40
41 DWORD dwAccess; /* access mode of the handle */
42 DWORD dwShare; /* share mode of the handle */
43 DWORD dwCreation; /* dwCreationDisposition */
44 DWORD dwFlags; /* flags and attributes */
45
46 DWORD dwUserData;
47 DWORD dwInternalType;
48
49 LPVOID lpHandlerData; /* for private use of the device handler */
50} HMHANDLEDATA, *PHMHANDLEDATA;
51
52
53
54class HMDeviceHandler
55{
56 /***************************************************************************
57 * The following methods are called by the handle manager request router. *
58 * They are exact replacements for the corresponding Win32 calls. *
59 ***************************************************************************/
60
61public:
62 LPCSTR lpHMDeviceName; /* a reference to the device name */
63
64 HMDeviceHandler(LPCSTR lpDeviceName); /* constructor with device name */
65
66
67 /***********************************
68 * handle generic standard methods *
69 ***********************************/
70
71 /* this is a special internal method to handle non-standard requests */
72 /* such as GetConsoleMode() for console devices */
73 virtual DWORD _DeviceRequest (PHMHANDLEDATA pHMHandleData,
74 ULONG ulRequestCode,
75 ULONG arg1,
76 ULONG arg2,
77 ULONG arg3,
78 ULONG arg4);
79
80 virtual BOOL DuplicateHandle(PHMHANDLEDATA pHMHandleData, HANDLE srcprocess,
81 PHMHANDLEDATA pHMSrcHandle,
82 HANDLE destprocess,
83 PHANDLE desthandle,
84 DWORD fdwAccess,
85 BOOL fInherit,
86 DWORD fdwOptions);
87
88 /* this is a handler method for calls to CreateFile() */
89 virtual DWORD CreateFile (LPCSTR lpFileName,
90 PHMHANDLEDATA pHMHandleData,
91 PVOID lpSecurityAttributes,
92 PHMHANDLEDATA pHMHandleDataTemplate);
93
94 /* this is a handler method for calls to OpenFile() */
95 virtual DWORD OpenFile (LPCSTR lpFileName,
96 PHMHANDLEDATA pHMHandleData,
97 OFSTRUCT* pOFStruct,
98 UINT fuMode);
99
100 /* this is a handler method for calls to CloseHandle() */
101 virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);
102
103 /* this is a handler method for calls to ReadFile() */
104 virtual DWORD ReadFile (PHMHANDLEDATA pHMHandleData,
105 LPCVOID lpBuffer,
106 DWORD nNumberOfBytesToRead,
107 LPDWORD lpNumberOfBytesRead,
108 LPOVERLAPPED lpOverlapped);
109
110 /* this is a handler method for calls to WriteFile() */
111 virtual DWORD WriteFile (PHMHANDLEDATA pHMHandleData,
112 LPCVOID lpBuffer,
113 DWORD nNumberOfBytesToWrite,
114 LPDWORD lpNumberOfBytesWritten,
115 LPOVERLAPPED lpOverlapped);
116
117 /* this is a handler method for calls to GetFileType() */
118 virtual DWORD GetFileType (PHMHANDLEDATA pHMHandleData);
119
120
121 /* this is a handler method for calls to GetFileInformationByHandle() */
122 virtual DWORD GetFileInformationByHandle(PHMHANDLEDATA pHMHandleData,
123 BY_HANDLE_FILE_INFORMATION *pHFI);
124
125 /* this is a handler method for calls to SetEndOfFile() */
126 virtual BOOL SetEndOfFile(PHMHANDLEDATA pHMHandleData);
127
128 /* this is a handler method for calls to SetFileTime() */
129 virtual BOOL SetFileTime (PHMHANDLEDATA pHMHandleData,
130 LPFILETIME pFT1,
131 LPFILETIME pFT2,
132 LPFILETIME pFT3);
133
134 /* this is a handler method for calls to GetFileSize() */
135 virtual DWORD GetFileSize(PHMHANDLEDATA pHMHandleData,
136 PDWORD pSizeHigh);
137
138 /* this is a handler method for calls to SetFilePointer() */
139 virtual DWORD SetFilePointer(PHMHANDLEDATA pHMHandleData,
140 LONG lDistanceToMove,
141 PLONG lpDistanceToMoveHigh,
142 DWORD dwMoveMethod);
143
144 /* this is a handler method for calls to FlushFileBuffers() */
145 virtual BOOL FlushFileBuffers(PHMHANDLEDATA pHMHandleData);
146
147 /* this is a handler method for calls to GetOverlappedResult() */
148 virtual BOOL GetOverlappedResult (PHMHANDLEDATA pHMHandleData,
149 LPOVERLAPPED lpOverlapped,
150 LPDWORD arg3,
151 BOOL arg4);
152
153 /* this is a handler method for calls to LockFile() */
154 virtual DWORD LockFile(PHMHANDLEDATA pHMHandleData,
155 DWORD arg2,
156 DWORD arg3,
157 DWORD arg4,
158 DWORD arg5);
159
160 /* this is a handler method for calls to LockFileEx() */
161 virtual DWORD LockFileEx(PHMHANDLEDATA pHMHandleData,
162 DWORD dwFlags,
163 DWORD dwReserved,
164 DWORD nNumberOfBytesToLockLow,
165 DWORD nNumberOfBytesToLockHigh,
166 LPOVERLAPPED lpOverlapped);
167
168 /* this is a handler method for calls to UnlockFile() */
169 virtual DWORD UnlockFile(PHMHANDLEDATA pHMHandleData,
170 DWORD arg2,
171 DWORD arg3,
172 DWORD arg4,
173 DWORD arg5);
174
175 /* this is a handler method for calls to UnlockFileEx() */
176 virtual DWORD UnlockFileEx(PHMHANDLEDATA pHMHandleData,
177 DWORD dwFlags,
178 DWORD dwReserved,
179 DWORD nNumberOfBytesToLockLow,
180 DWORD nNumberOfBytesToLockHigh,
181 LPOVERLAPPED lpOverlapped);
182
183 /* this is a handler method for calls to WaitForSingleObject */
184 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData,
185 DWORD dwTimeout);
186
187 /* this is a handler method for calls to WaitForSingleObjectEx */
188 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData,
189 DWORD dwTimeout,
190 BOOL fAlertable);
191
192
193 /***************************************************************************
194 * Events *
195 ***************************************************************************/
196
197 /* this is a handler method for calls to CreateEvent() */
198 virtual DWORD CreateEvent (PHMHANDLEDATA pHMHandleData,
199 LPSECURITY_ATTRIBUTES lpsa,
200 BOOL fManualReset,
201 BOOL fInitialState,
202 LPCSTR lpszEventName);
203
204 /* this is a handler method for calls to OpenEvent() */
205 virtual DWORD OpenEvent (PHMHANDLEDATA pHMHandleData,
206 BOOL fInheritHandle,
207 LPCSTR lpszEventName);
208
209 /* this is a handle method for calls to ResetEvent() */
210 virtual BOOL ResetEvent (PHMHANDLEDATA pHMHandleData);
211
212 /* this is a handle method for calls to SetEvent() */
213 virtual BOOL SetEvent (PHMHANDLEDATA pHMHandleData);
214
215 /* this is a handle method for calls to PulseEvent() */
216 virtual BOOL PulseEvent (PHMHANDLEDATA pHMHandleData);
217
218
219 /***************************************************************************
220 * Mutex *
221 ***************************************************************************/
222
223 /* this is a handler method for calls to CreateMutex() */
224 virtual DWORD CreateMutex (PHMHANDLEDATA pHMHandleData,
225 LPSECURITY_ATTRIBUTES lpsa,
226 BOOL fInitialOwner,
227 LPCSTR lpszMutexName);
228
229 /* this is a handler method for calls to OpenMutex() */
230 virtual DWORD OpenMutex (PHMHANDLEDATA pHMHandleData,
231 BOOL fInheritHandle,
232 LPCSTR lpszMutexName);
233
234 /* this is a handle method for calls to ReleaseMutex() */
235 virtual BOOL ReleaseMutex(PHMHANDLEDATA pHMHandleData);
236
237
238 /***************************************************************************
239 * Semaphores *
240 ***************************************************************************/
241
242 /* this is a handler method for calls to CreateSemaphore() */
243 virtual DWORD CreateSemaphore (PHMHANDLEDATA pHMHandleData,
244 LPSECURITY_ATTRIBUTES lpsa,
245 LONG lInitialCount,
246 LONG lMaximumCount,
247 LPCSTR lpszSemaphoreName);
248
249 /* this is a handler method for calls to OpenSemaphore() */
250 virtual DWORD OpenSemaphore (PHMHANDLEDATA pHMHandleData,
251 BOOL fInheritHandle,
252 LPCSTR lpszSemaphoreName);
253
254 /* this is a handle method for calls to ReleaseSemaphore() */
255 virtual BOOL ReleaseSemaphore(PHMHANDLEDATA pHMHandleData,
256 LONG cReleaseCount,
257 LPLONG lpPreviousCount);
258
259 /* this is a handler method for calls to CreateFileMapping() */
260 virtual DWORD CreateFileMapping (PHMHANDLEDATA pHMHandleData,
261 HANDLE hFile,
262 LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
263 DWORD flProtect,
264 DWORD dwMaximumSizeHigh,
265 DWORD dwMaximumSizeLow,
266 LPCSTR lpName);
267
268 /* this is a handler method for calls to OpenFileMapping() */
269 virtual DWORD OpenFileMapping (PHMHANDLEDATA pHMHandleData,
270 DWORD access, /* [in] Access mode */
271 BOOL fInherit,
272 LPCSTR lpName);
273
274 /* this is a handler method for calls to MapViewOfFileEx() */
275 virtual LPVOID MapViewOfFileEx (PHMHANDLEDATA pHMHandleData,
276 DWORD dwDesiredAccess,
277 DWORD dwFileOffsetHigh,
278 DWORD dwFileOffsetLow,
279 DWORD dwNumberOfBytesToMap,
280 LPVOID lpBaseAddress);
281
282};
283
284
285/*****************************************************************************
286 * Prototypes *
287 *****************************************************************************/
288
289 /* register a new device with the handle manager */
290DWORD HMDeviceRegister(LPSTR pszDeviceName,
291 HMDeviceHandler *pDeviceHandler);
292
293
294#endif /* _HM_DEVICE_H_ */
295
Note: See TracBrowser for help on using the repository browser.