source: trunk/include/HandleManager.h@ 21916

Last change on this file since 21916 was 21916, checked in by dmik, 14 years ago

Merge branch gcc-kmk to trunk.

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