source: trunk/include/HandleManager.h@ 1857

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

add GetCommState

File size: 15.2 KB
Line 
1/* $Id: HandleManager.h,v 1.13 1999-11-27 12:47:07 achimha 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#endif
37
38#ifndef __WINE_WINDEF_H
39typedef struct
40{
41 DWORD Internal;
42 DWORD InternalHigh;
43 DWORD Offset;
44 DWORD OffsetHigh;
45 HANDLE hEvent;
46} OVERLAPPED, *POVERLAPPED, *LPOVERLAPPED;
47
48typedef struct tagDCB
49{
50 DWORD DCBlength;
51 DWORD BaudRate;
52 unsigned fBinary :1;
53 unsigned fParity :1;
54 unsigned fOutxCtsFlow :1;
55 unsigned fOutxDsrFlow :1;
56 unsigned fDtrControl :2;
57 unsigned fDsrSensitivity :1;
58 unsigned fTXContinueOnXoff :1;
59 unsigned fOutX :1;
60 unsigned fInX :1;
61 unsigned fErrorChar :1;
62 unsigned fNull :1;
63 unsigned fRtsControl :2;
64 unsigned fAbortOnError :1;
65 unsigned fDummy2 :17;
66 WORD wReserved;
67 WORD XonLim;
68 WORD XoffLim;
69 BYTE ByteSize;
70 BYTE Parity;
71 BYTE StopBits;
72 char XonChar;
73 char XoffChar;
74 char ErrorChar;
75 char EofChar;
76 char EvtChar;
77} DCB, *LPDCB;
78
79#endif
80
81
82//LPSECURITY_ATTRIBUTES
83
84
85/*****************************************************************************
86 * Defines & Macros *
87 *****************************************************************************/
88
89 /* 1998/02/12 PH Correction of os2win.h */
90#undef FILE_TYPE_UNKNOWN
91#define FILE_TYPE_UNKNOWN 0x0000
92
93#undef FILE_TYPE_DISK
94#define FILE_TYPE_DISK 0x0001
95
96#undef FILE_TYPE_CHAR
97#define FILE_TYPE_CHAR 0x0002
98
99#undef FILE_TYPE_PIPE
100#define FILE_TYPE_PIPE 0x0003
101
102#undef FILE_TYPE_REMOTE
103#define FILE_TYPE_REMOTE 0x8000
104
105#ifndef INVALID_HANDLE_ERROR
106#define INVALID_HANDLE_ERROR (-1)
107#endif
108
109
110/*****************************************************************************
111 * Structures *
112 *****************************************************************************/
113
114
115/*****************************************************************************
116 * Prototypes *
117 *****************************************************************************/
118
119DWORD HMInitialize(void); /* initialize the HandleManager */
120
121DWORD HMTerminate(void); /* terminate the HandleManager */
122
123
124 /* handle manager version of GetStdHandle, Open32 can't really help us here */
125HANDLE HMGetStdHandle(DWORD nStdHandle);
126
127 /* handle manager version of GetStdHandle, Open32 can't really help us here */
128BOOL HMSetStdHandle(DWORD nStdHandle,
129 HANDLE hHandle);
130
131
132/*****************************************************************************/
133/* handle translation buffer management */
134/* */
135/* Since some Win32 applications rely (!) on 16-bit handles, we've got to do */
136/* 32-bit to 16-bit and vs vsa translation here. */
137/* Filehandle-based functions should be routed via the handlemanager instead */
138/* of going to Open32 directly. */
139/*****************************************************************************/
140
141DWORD HMHandleAllocate (PULONG phHandle16,
142 ULONG hHandle32);
143
144DWORD HMHandleFree (ULONG hHandle16);
145
146DWORD HMHandleValidate (ULONG hHandle16);
147
148DWORD HMHandleTranslateToWin (ULONG hHandle32,
149 PULONG phHandle16);
150
151DWORD HMHandleTranslateToOS2 (ULONG hHandle16,
152 PULONG hHandle32);
153
154DWORD HMHandleTranslateToOS2i(ULONG hHandle16);
155
156
157/*****************************************************************************
158 * Forwarders *
159 *****************************************************************************/
160
161// enable C linkage to avoid parameter mangling
162#ifdef __cplusplus__
163extern "C" {
164#endif
165
166HANDLE HMCreateEvent (LPSECURITY_ATTRIBUTES lpsa,
167 BOOL bManualReset,
168 BOOL bInitialState,
169 LPCSTR lpName);
170
171HANDLE HMCreateMutex (LPSECURITY_ATTRIBUTES lpsa,
172 BOOL bInitialOwner,
173 LPCSTR lpName);
174
175HANDLE HMCreateFile (LPCSTR lpFileName,
176 DWORD dwDesiredAccess,
177 DWORD dwShareMode,
178 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
179 DWORD dwCreationDisposition,
180 DWORD dwFlagsAndAttributes,
181 HANDLE hTemplateFile);
182
183HANDLE HMOpenFile (LPCSTR lpFileName,
184 OFSTRUCT* pOFStruct,
185 UINT fuMode);
186
187HANDLE HMOpenEvent (DWORD fdwAccess,
188 BOOL fInherit,
189 LPCSTR lpName);
190
191HANDLE HMOpenMutex (DWORD fdwAccess,
192 BOOL fInherit,
193 LPCSTR lpName);
194
195BOOL HMCloseHandle (HANDLE hObject);
196
197BOOL HMReadFile (HANDLE hFile,
198 LPVOID lpBuffer,
199 DWORD nNumberOfBytesToRead,
200 LPDWORD lpNumberOfBytesRead,
201 LPOVERLAPPED lpOverlapped);
202
203BOOL HMWriteFile (HANDLE hFile,
204 LPCVOID lpBuffer,
205 DWORD nNumberOfBytesToWrite,
206 LPDWORD lpNumberOfBytesWritten,
207 LPOVERLAPPED lpOverlapped);
208
209DWORD HMGetFileType (HANDLE hFile);
210
211DWORD HMDeviceRequest (HANDLE hFile,
212 ULONG ulRequestCode,
213 ULONG arg1,
214 ULONG arg2,
215 ULONG arg3,
216 ULONG arg4);
217
218BOOL HMGetFileInformationByHandle (HANDLE hFile,
219 BY_HANDLE_FILE_INFORMATION *pHFI);
220
221BOOL HMSetEndOfFile (HANDLE hFile);
222
223BOOL HMSetFileTime (HANDLE hFile,
224 const FILETIME *pFT1,
225 const FILETIME *pFT2,
226 const FILETIME *pFT3);
227
228DWORD HMGetFileSize (HANDLE hFile,
229 PDWORD pSize);
230
231DWORD HMSetFilePointer (HANDLE hFile,
232 LONG lDistanceToMove,
233 PLONG lpDistanceToMoveHigh,
234 DWORD dwMoveMethod);
235
236BOOL HMLockFile (HFILE hFile,
237 DWORD dwFileOffsetLow,
238 DWORD dwFileOffsetHigh,
239 DWORD nNumberOfBytesToLockLow,
240 DWORD nNumberOfBytesToLockHigh);
241
242BOOL HMLockFileEx (HANDLE hFile,
243 DWORD dwFlags,
244 DWORD dwReserved,
245 DWORD nNumberOfBytesToLockLow,
246 DWORD nNumberOfBytesToLockHigh,
247 LPOVERLAPPED lpOverlapped);
248
249BOOL HMUnlockFile (HANDLE hFile,
250 DWORD dwFileOffsetLow,
251 DWORD dwFileOffsetHigh,
252 DWORD cbUnlockLow,
253 DWORD cbUnlockHigh);
254
255BOOL HMUnlockFileEx (HANDLE hFile,
256 DWORD dwFlags,
257 DWORD dwReserved,
258 DWORD nNumberOfBytesToLockLow,
259 DWORD nNumberOfBytesToLockHigh,
260 LPOVERLAPPED lpOverlapped);
261
262DWORD HMWaitForSingleObject (HANDLE hObject,
263 DWORD dwTimeout);
264
265DWORD HMWaitForSingleObjectEx (HANDLE hObject,
266 DWORD dwTimeout,
267 BOOL fAlertable);
268
269DWORD HMWaitForMultipleObjects (DWORD cObjects,
270 HANDLE *lphObjects,
271 BOOL fWaitAll,
272 DWORD dwTimeout);
273
274DWORD HMWaitForMultipleObjectsEx (DWORD cObjects,
275 HANDLE *lphObjects,
276 BOOL fWaitAll,
277 DWORD dwTimeout,
278 BOOL fAlertable);
279
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
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 */
315 LPCSTR name); /* [in] Name of file-mapping object */
316
317HANDLE HMOpenFileMapping(
318 DWORD access, /* [in] Access mode */
319 BOOL inherit, /* [in] Inherit flag */
320 LPCSTR name ); /* [in] Name of file-mapping object */
321
322LPVOID HMMapViewOfFileEx (HANDLE hFileMappingObject,
323 DWORD dwDesiredAccess,
324 DWORD dwFileOffsetHigh,
325 DWORD dwFileOffsetLow,
326 DWORD dwNumberOfBytesToMap,
327 LPVOID lpBaseAddress);
328
329BOOL HMDuplicateHandle(HANDLE srcprocess,
330 HANDLE srchandle,
331 HANDLE destprocess,
332 PHANDLE desthandle,
333 DWORD fdwAccess,
334 BOOL fInherit,
335 DWORD fdwOptions);
336
337BOOL HMSetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue);
338
339BOOL HMGetCommState(INT hCommDev, LPDCB lpdcb);
340
341#ifdef __cplusplus__
342 }
343#endif
344
345#endif /* _HANDLEMANAGER_H_ */
Note: See TracBrowser for help on using the repository browser.