source: trunk/include/HandleManager.h@ 2129

Last change on this file since 2129 was 2129, checked in by sandervl, 26 years ago

Added token handlemanager class + HMHandleGetUserData export

File size: 15.9 KB
RevLine 
[2129]1/* $Id: HandleManager.h,v 1.14 1999-12-18 21:46:19 sandervl Exp $ */
[262]2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 * Win32 Unified Handle Manager for OS/2
6 * 1998/02/11 PH Patrick Haller (haller@zebra.fh-weingarten.de)
7 *
8 * @(#) HandleManager.Cpp 1.0.0 1998/02/11 PH start
9 */
10
11#ifndef _HANDLEMANAGER_H_
12#define _HANDLEMANAGER_H_
13
14
15/*****************************************************************************
16 * Remark *
17 *****************************************************************************
18
19 1998/02/11 PH The interface to the handle manager is twofold:
20 a) HMxxx routines to be called from the "top" from the
21 KERNEL32 stubs
22 b) the HMDeviceHandler class is actually a workaround for
23 the device driver that would handle the requests on Win32.
24 To implement a new pseudo-device, one has create a new
25 HMDeviceHandler class and link it into the table in the
26 HANDLEMANAGER.CPP file.
27 */
28
29
30/*****************************************************************************
31 * Includes *
32 *****************************************************************************/
33
[781]34#ifdef _OS2WIN_H
35#include <winos2def.h>
36#endif
37
[776]38#ifndef __WINE_WINDEF_H
39typedef struct
40{
[262]41 DWORD Internal;
42 DWORD InternalHigh;
43 DWORD Offset;
44 DWORD OffsetHigh;
45 HANDLE hEvent;
46} OVERLAPPED, *POVERLAPPED, *LPOVERLAPPED;
[1857]47
48typedef struct tagDCB
49{
50 DWORD DCBlength;
51 DWORD BaudRate;
52 unsigned fBinary :1;
53 unsigned fParity :1;
54 unsigned fOutxCtsFlow :1;
55 unsigned fOutxDsrFlow :1;
56 unsigned fDtrControl :2;
57 unsigned fDsrSensitivity :1;
58 unsigned fTXContinueOnXoff :1;
59 unsigned fOutX :1;
60 unsigned fInX :1;
61 unsigned fErrorChar :1;
62 unsigned fNull :1;
63 unsigned fRtsControl :2;
64 unsigned fAbortOnError :1;
65 unsigned fDummy2 :17;
66 WORD wReserved;
67 WORD XonLim;
68 WORD XoffLim;
69 BYTE ByteSize;
70 BYTE Parity;
71 BYTE StopBits;
72 char XonChar;
73 char XoffChar;
74 char ErrorChar;
75 char EofChar;
76 char EvtChar;
77} DCB, *LPDCB;
78
[262]79#endif
80
81
[776]82//LPSECURITY_ATTRIBUTES
83
84
[262]85/*****************************************************************************
86 * Defines & Macros *
87 *****************************************************************************/
88
89 /* 1998/02/12 PH Correction of os2win.h */
90#undef FILE_TYPE_UNKNOWN
91#define FILE_TYPE_UNKNOWN 0x0000
92
93#undef FILE_TYPE_DISK
94#define FILE_TYPE_DISK 0x0001
95
96#undef FILE_TYPE_CHAR
97#define FILE_TYPE_CHAR 0x0002
98
99#undef FILE_TYPE_PIPE
100#define FILE_TYPE_PIPE 0x0003
101
102#undef FILE_TYPE_REMOTE
103#define FILE_TYPE_REMOTE 0x8000
104
105#ifndef INVALID_HANDLE_ERROR
106#define INVALID_HANDLE_ERROR (-1)
107#endif
108
109
110/*****************************************************************************
111 * Structures *
112 *****************************************************************************/
113
114
115/*****************************************************************************
116 * Prototypes *
117 *****************************************************************************/
118
119DWORD HMInitialize(void); /* initialize the HandleManager */
120
121DWORD HMTerminate(void); /* terminate the HandleManager */
122
123
124 /* handle manager version of GetStdHandle, Open32 can't really help us here */
125HANDLE HMGetStdHandle(DWORD nStdHandle);
126
127 /* handle manager version of GetStdHandle, Open32 can't really help us here */
128BOOL HMSetStdHandle(DWORD nStdHandle,
129 HANDLE hHandle);
130
131
132/*****************************************************************************/
133/* handle translation buffer management */
134/* */
135/* Since some Win32 applications rely (!) on 16-bit handles, we've got to do */
136/* 32-bit to 16-bit and vs vsa translation here. */
137/* Filehandle-based functions should be routed via the handlemanager instead */
138/* of going to Open32 directly. */
139/*****************************************************************************/
140
141DWORD HMHandleAllocate (PULONG phHandle16,
142 ULONG hHandle32);
143
144DWORD HMHandleFree (ULONG hHandle16);
145
[2129]146DWORD HMHandleGetUserData (ULONG hHandle16);
147
[262]148DWORD HMHandleValidate (ULONG hHandle16);
149
150DWORD HMHandleTranslateToWin (ULONG hHandle32,
151 PULONG phHandle16);
152
153DWORD HMHandleTranslateToOS2 (ULONG hHandle16,
154 PULONG hHandle32);
155
156DWORD HMHandleTranslateToOS2i(ULONG hHandle16);
157
158
159/*****************************************************************************
160 * Forwarders *
161 *****************************************************************************/
162
163// enable C linkage to avoid parameter mangling
164#ifdef __cplusplus__
165extern "C" {
166#endif
167
[278]168HANDLE HMCreateEvent (LPSECURITY_ATTRIBUTES lpsa,
169 BOOL bManualReset,
170 BOOL bInitialState,
171 LPCSTR lpName);
[262]172
[278]173HANDLE HMCreateMutex (LPSECURITY_ATTRIBUTES lpsa,
174 BOOL bInitialOwner,
175 LPCSTR lpName);
[262]176
[278]177HANDLE HMCreateFile (LPCSTR lpFileName,
178 DWORD dwDesiredAccess,
179 DWORD dwShareMode,
180 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
181 DWORD dwCreationDisposition,
182 DWORD dwFlagsAndAttributes,
183 HANDLE hTemplateFile);
[262]184
[278]185HANDLE HMOpenFile (LPCSTR lpFileName,
186 OFSTRUCT* pOFStruct,
187 UINT fuMode);
[262]188
[278]189HANDLE HMOpenEvent (DWORD fdwAccess,
190 BOOL fInherit,
191 LPCSTR lpName);
[262]192
[278]193HANDLE HMOpenMutex (DWORD fdwAccess,
194 BOOL fInherit,
195 LPCSTR lpName);
[262]196
[278]197BOOL HMCloseHandle (HANDLE hObject);
[262]198
[278]199BOOL HMReadFile (HANDLE hFile,
200 LPVOID lpBuffer,
201 DWORD nNumberOfBytesToRead,
202 LPDWORD lpNumberOfBytesRead,
203 LPOVERLAPPED lpOverlapped);
[262]204
[278]205BOOL HMWriteFile (HANDLE hFile,
206 LPCVOID lpBuffer,
207 DWORD nNumberOfBytesToWrite,
208 LPDWORD lpNumberOfBytesWritten,
209 LPOVERLAPPED lpOverlapped);
[262]210
[278]211DWORD HMGetFileType (HANDLE hFile);
[262]212
[278]213DWORD HMDeviceRequest (HANDLE hFile,
214 ULONG ulRequestCode,
215 ULONG arg1,
216 ULONG arg2,
217 ULONG arg3,
218 ULONG arg4);
[262]219
[278]220BOOL HMGetFileInformationByHandle (HANDLE hFile,
221 BY_HANDLE_FILE_INFORMATION *pHFI);
[262]222
[278]223BOOL HMSetEndOfFile (HANDLE hFile);
[262]224
[278]225BOOL HMSetFileTime (HANDLE hFile,
226 const FILETIME *pFT1,
227 const FILETIME *pFT2,
228 const FILETIME *pFT3);
[262]229
[278]230DWORD HMGetFileSize (HANDLE hFile,
231 PDWORD pSize);
[262]232
[278]233DWORD HMSetFilePointer (HANDLE hFile,
234 LONG lDistanceToMove,
235 PLONG lpDistanceToMoveHigh,
236 DWORD dwMoveMethod);
[262]237
[278]238BOOL HMLockFile (HFILE hFile,
239 DWORD dwFileOffsetLow,
240 DWORD dwFileOffsetHigh,
241 DWORD nNumberOfBytesToLockLow,
242 DWORD nNumberOfBytesToLockHigh);
[262]243
[278]244BOOL HMLockFileEx (HANDLE hFile,
245 DWORD dwFlags,
246 DWORD dwReserved,
247 DWORD nNumberOfBytesToLockLow,
248 DWORD nNumberOfBytesToLockHigh,
249 LPOVERLAPPED lpOverlapped);
250
251BOOL HMUnlockFile (HANDLE hFile,
252 DWORD dwFileOffsetLow,
253 DWORD dwFileOffsetHigh,
254 DWORD cbUnlockLow,
255 DWORD cbUnlockHigh);
256
257BOOL HMUnlockFileEx (HANDLE hFile,
258 DWORD dwFlags,
259 DWORD dwReserved,
260 DWORD nNumberOfBytesToLockLow,
261 DWORD nNumberOfBytesToLockHigh,
262 LPOVERLAPPED lpOverlapped);
263
264DWORD HMWaitForSingleObject (HANDLE hObject,
265 DWORD dwTimeout);
266
267DWORD HMWaitForSingleObjectEx (HANDLE hObject,
268 DWORD dwTimeout,
269 BOOL fAlertable);
270
271DWORD HMWaitForMultipleObjects (DWORD cObjects,
272 HANDLE *lphObjects,
273 BOOL fWaitAll,
274 DWORD dwTimeout);
275
276DWORD HMWaitForMultipleObjectsEx (DWORD cObjects,
277 HANDLE *lphObjects,
278 BOOL fWaitAll,
279 DWORD dwTimeout,
280 BOOL fAlertable);
281
[2129]282DWORD HMMsgWaitForMultipleObjects (DWORD nCount,
283 HANDLE *pHandles,
284 BOOL fWaitAll,
285 DWORD dwMilliseconds,
286 DWORD dwWakeMask);
287
[278]288BOOL HMFlushFileBuffers (HANDLE hObject);
289
290BOOL HMGetOverlappedResult (HANDLE hObject,
291 LPOVERLAPPED lpOverlapped,
292 LPDWORD lpNumberOfBytesTransferred,
293 BOOL bWait);
294
295BOOL HMReleaseMutex (HANDLE hObject);
296
297BOOL HMSetEvent (HANDLE hEvent);
298
299BOOL HMPulseEvent (HANDLE hEvent);
300
301BOOL HMResetEvent (HANDLE hEvent);
302
303HANDLE HMCreateSemaphore (LPSECURITY_ATTRIBUTES lpsa,
304 LONG lInitialCount,
305 LONG lMaximumCount,
306 LPCSTR lpszSemaphoreName);
307
308HANDLE HMOpenSemaphore (DWORD fdwAccess,
309 BOOL fInheritHandle,
310 LPCSTR lpszSemaphoreName);
311
312BOOL HMReleaseSemaphore (HANDLE hSemaphore,
313 LONG cReleaseCount,
314 LPLONG lpPreviousCount);
315
316
[664]317HANDLE HMCreateFileMapping(
318 HFILE hFile, /* [in] Handle of file to map */
319 SECURITY_ATTRIBUTES *sa, /* [in] Optional security attributes*/
320 DWORD protect, /* [in] Protection for mapping object */
321 DWORD size_high, /* [in] High-order 32 bits of object size */
322 DWORD size_low, /* [in] Low-order 32 bits of object size */
[776]323 LPCSTR name); /* [in] Name of file-mapping object */
[659]324
[664]325HANDLE HMOpenFileMapping(
326 DWORD access, /* [in] Access mode */
327 BOOL inherit, /* [in] Inherit flag */
328 LPCSTR name ); /* [in] Name of file-mapping object */
[659]329
330LPVOID HMMapViewOfFileEx (HANDLE hFileMappingObject,
331 DWORD dwDesiredAccess,
332 DWORD dwFileOffsetHigh,
333 DWORD dwFileOffsetLow,
334 DWORD dwNumberOfBytesToMap,
[676]335 LPVOID lpBaseAddress);
[659]336
[689]337BOOL HMDuplicateHandle(HANDLE srcprocess,
338 HANDLE srchandle,
339 HANDLE destprocess,
340 PHANDLE desthandle,
341 DWORD fdwAccess,
342 BOOL fInherit,
343 DWORD fdwOptions);
344
[2129]345DWORD HMOpenThreadToken(HANDLE ThreadHandle,
346 DWORD DesiredAccess,
347 BOOL OpenAsSelf,
348 DWORD dwUserData,
349 HANDLE *TokenHandle);
350
351DWORD HMOpenProcessToken(HANDLE ProcessHandle,
352 DWORD DesiredAccess,
353 DWORD dwUserData,
354 HANDLE *TokenHandle);
355
[1856]356BOOL HMSetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue);
357
[1857]358BOOL HMGetCommState(INT hCommDev, LPDCB lpdcb);
359
[262]360#ifdef __cplusplus__
361 }
362#endif
363
364#endif /* _HANDLEMANAGER_H_ */
Note: See TracBrowser for help on using the repository browser.