source: trunk/include/HandleManager.h@ 3124

Last change on this file since 3124 was 3124, checked in by sandervl, 25 years ago

header updates

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