source: trunk/include/HandleManager.h@ 776

Last change on this file since 776 was 776, checked in by phaller, 26 years ago

Fix: definition PSZ in HandleManager

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