source: trunk/include/HandleManager.h@ 1856

Last change on this file since 1856 was 1856, checked in by achimha, 26 years ago

SetupComm router

File size: 14.3 KB
RevLine 
[1856]1/* $Id: HandleManager.h,v 1.12 1999-11-27 12:16:26 achimha 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;
47#endif
48
49
[776]50//LPSECURITY_ATTRIBUTES
51
52
[262]53/*****************************************************************************
54 * Defines & Macros *
55 *****************************************************************************/
56
57 /* 1998/02/12 PH Correction of os2win.h */
58#undef FILE_TYPE_UNKNOWN
59#define FILE_TYPE_UNKNOWN 0x0000
60
61#undef FILE_TYPE_DISK
62#define FILE_TYPE_DISK 0x0001
63
64#undef FILE_TYPE_CHAR
65#define FILE_TYPE_CHAR 0x0002
66
67#undef FILE_TYPE_PIPE
68#define FILE_TYPE_PIPE 0x0003
69
70#undef FILE_TYPE_REMOTE
71#define FILE_TYPE_REMOTE 0x8000
72
73#ifndef INVALID_HANDLE_ERROR
74#define INVALID_HANDLE_ERROR (-1)
75#endif
76
77
78/*****************************************************************************
79 * Structures *
80 *****************************************************************************/
81
82
83/*****************************************************************************
84 * Prototypes *
85 *****************************************************************************/
86
87DWORD HMInitialize(void); /* initialize the HandleManager */
88
89DWORD HMTerminate(void); /* terminate the HandleManager */
90
91
92 /* handle manager version of GetStdHandle, Open32 can't really help us here */
93HANDLE HMGetStdHandle(DWORD nStdHandle);
94
95 /* handle manager version of GetStdHandle, Open32 can't really help us here */
96BOOL HMSetStdHandle(DWORD nStdHandle,
97 HANDLE hHandle);
98
99
100/*****************************************************************************/
101/* handle translation buffer management */
102/* */
103/* Since some Win32 applications rely (!) on 16-bit handles, we've got to do */
104/* 32-bit to 16-bit and vs vsa translation here. */
105/* Filehandle-based functions should be routed via the handlemanager instead */
106/* of going to Open32 directly. */
107/*****************************************************************************/
108
109DWORD HMHandleAllocate (PULONG phHandle16,
110 ULONG hHandle32);
111
112DWORD HMHandleFree (ULONG hHandle16);
113
114DWORD HMHandleValidate (ULONG hHandle16);
115
116DWORD HMHandleTranslateToWin (ULONG hHandle32,
117 PULONG phHandle16);
118
119DWORD HMHandleTranslateToOS2 (ULONG hHandle16,
120 PULONG hHandle32);
121
122DWORD HMHandleTranslateToOS2i(ULONG hHandle16);
123
124
125/*****************************************************************************
126 * Forwarders *
127 *****************************************************************************/
128
129// enable C linkage to avoid parameter mangling
130#ifdef __cplusplus__
131extern "C" {
132#endif
133
[278]134HANDLE HMCreateEvent (LPSECURITY_ATTRIBUTES lpsa,
135 BOOL bManualReset,
136 BOOL bInitialState,
137 LPCSTR lpName);
[262]138
[278]139HANDLE HMCreateMutex (LPSECURITY_ATTRIBUTES lpsa,
140 BOOL bInitialOwner,
141 LPCSTR lpName);
[262]142
[278]143HANDLE HMCreateFile (LPCSTR lpFileName,
144 DWORD dwDesiredAccess,
145 DWORD dwShareMode,
146 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
147 DWORD dwCreationDisposition,
148 DWORD dwFlagsAndAttributes,
149 HANDLE hTemplateFile);
[262]150
[278]151HANDLE HMOpenFile (LPCSTR lpFileName,
152 OFSTRUCT* pOFStruct,
153 UINT fuMode);
[262]154
[278]155HANDLE HMOpenEvent (DWORD fdwAccess,
156 BOOL fInherit,
157 LPCSTR lpName);
[262]158
[278]159HANDLE HMOpenMutex (DWORD fdwAccess,
160 BOOL fInherit,
161 LPCSTR lpName);
[262]162
[278]163BOOL HMCloseHandle (HANDLE hObject);
[262]164
[278]165BOOL HMReadFile (HANDLE hFile,
166 LPVOID lpBuffer,
167 DWORD nNumberOfBytesToRead,
168 LPDWORD lpNumberOfBytesRead,
169 LPOVERLAPPED lpOverlapped);
[262]170
[278]171BOOL HMWriteFile (HANDLE hFile,
172 LPCVOID lpBuffer,
173 DWORD nNumberOfBytesToWrite,
174 LPDWORD lpNumberOfBytesWritten,
175 LPOVERLAPPED lpOverlapped);
[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
[278]196DWORD HMGetFileSize (HANDLE hFile,
197 PDWORD pSize);
[262]198
[278]199DWORD HMSetFilePointer (HANDLE hFile,
200 LONG lDistanceToMove,
201 PLONG lpDistanceToMoveHigh,
202 DWORD dwMoveMethod);
[262]203
[278]204BOOL HMLockFile (HFILE hFile,
205 DWORD dwFileOffsetLow,
206 DWORD dwFileOffsetHigh,
207 DWORD nNumberOfBytesToLockLow,
208 DWORD nNumberOfBytesToLockHigh);
[262]209
[278]210BOOL HMLockFileEx (HANDLE hFile,
211 DWORD dwFlags,
212 DWORD dwReserved,
213 DWORD nNumberOfBytesToLockLow,
214 DWORD nNumberOfBytesToLockHigh,
215 LPOVERLAPPED lpOverlapped);
216
217BOOL HMUnlockFile (HANDLE hFile,
218 DWORD dwFileOffsetLow,
219 DWORD dwFileOffsetHigh,
220 DWORD cbUnlockLow,
221 DWORD cbUnlockHigh);
222
223BOOL HMUnlockFileEx (HANDLE hFile,
224 DWORD dwFlags,
225 DWORD dwReserved,
226 DWORD nNumberOfBytesToLockLow,
227 DWORD nNumberOfBytesToLockHigh,
228 LPOVERLAPPED lpOverlapped);
229
230DWORD HMWaitForSingleObject (HANDLE hObject,
231 DWORD dwTimeout);
232
233DWORD HMWaitForSingleObjectEx (HANDLE hObject,
234 DWORD dwTimeout,
235 BOOL fAlertable);
236
237DWORD HMWaitForMultipleObjects (DWORD cObjects,
238 HANDLE *lphObjects,
239 BOOL fWaitAll,
240 DWORD dwTimeout);
241
242DWORD HMWaitForMultipleObjectsEx (DWORD cObjects,
243 HANDLE *lphObjects,
244 BOOL fWaitAll,
245 DWORD dwTimeout,
246 BOOL fAlertable);
247
248BOOL HMFlushFileBuffers (HANDLE hObject);
249
250BOOL HMGetOverlappedResult (HANDLE hObject,
251 LPOVERLAPPED lpOverlapped,
252 LPDWORD lpNumberOfBytesTransferred,
253 BOOL bWait);
254
255BOOL HMReleaseMutex (HANDLE hObject);
256
257BOOL HMSetEvent (HANDLE hEvent);
258
259BOOL HMPulseEvent (HANDLE hEvent);
260
261BOOL HMResetEvent (HANDLE hEvent);
262
263HANDLE HMCreateSemaphore (LPSECURITY_ATTRIBUTES lpsa,
264 LONG lInitialCount,
265 LONG lMaximumCount,
266 LPCSTR lpszSemaphoreName);
267
268HANDLE HMOpenSemaphore (DWORD fdwAccess,
269 BOOL fInheritHandle,
270 LPCSTR lpszSemaphoreName);
271
272BOOL HMReleaseSemaphore (HANDLE hSemaphore,
273 LONG cReleaseCount,
274 LPLONG lpPreviousCount);
275
276
[664]277HANDLE HMCreateFileMapping(
278 HFILE hFile, /* [in] Handle of file to map */
279 SECURITY_ATTRIBUTES *sa, /* [in] Optional security attributes*/
280 DWORD protect, /* [in] Protection for mapping object */
281 DWORD size_high, /* [in] High-order 32 bits of object size */
282 DWORD size_low, /* [in] Low-order 32 bits of object size */
[776]283 LPCSTR name); /* [in] Name of file-mapping object */
[659]284
[664]285HANDLE HMOpenFileMapping(
286 DWORD access, /* [in] Access mode */
287 BOOL inherit, /* [in] Inherit flag */
288 LPCSTR name ); /* [in] Name of file-mapping object */
[659]289
290LPVOID HMMapViewOfFileEx (HANDLE hFileMappingObject,
291 DWORD dwDesiredAccess,
292 DWORD dwFileOffsetHigh,
293 DWORD dwFileOffsetLow,
294 DWORD dwNumberOfBytesToMap,
[676]295 LPVOID lpBaseAddress);
[659]296
[689]297BOOL HMDuplicateHandle(HANDLE srcprocess,
298 HANDLE srchandle,
299 HANDLE destprocess,
300 PHANDLE desthandle,
301 DWORD fdwAccess,
302 BOOL fInherit,
303 DWORD fdwOptions);
304
[1856]305BOOL HMSetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue);
306
[262]307#ifdef __cplusplus__
308 }
309#endif
310
311#endif /* _HANDLEMANAGER_H_ */
Note: See TracBrowser for help on using the repository browser.