source: trunk/include/HandleManager.h@ 676

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

Put back handlemanager changes

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