source: trunk/src/kernel32/hmdevice.h@ 111

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

Fix: major restructuring of Open32 handle management, HandleManager

File size: 6.8 KB
Line 
1/* $Id: hmdevice.h,v 1.1 1999-06-17 18:21:43 phaller Exp $ */
2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 * Win32 Unified Handle Manager for OS/2
6 * 1999/06/17 PH Patrick Haller (phaller@gmx.net)
7 */
8
9#ifndef _HM_DEVICE_H_
10#define _HM_DEVICE_H_
11
12
13/*****************************************************************************
14 * Remark *
15 *****************************************************************************
16 */
17
18
19/*****************************************************************************
20 * Includes *
21 *****************************************************************************/
22
23
24/*****************************************************************************
25 * Structures *
26 *****************************************************************************/
27
28class HMDeviceHandler
29{
30 /***************************************************************************
31 * The following methods are called by the handle manager request router. *
32 * They are exact replacements for the corresponding Win32 calls. *
33 ***************************************************************************/
34
35public:
36 LPCSTR lpHMDeviceName; /* a reference to the device name */
37
38 HMDeviceHandler(LPCSTR lpDeviceName); /* constructor with device name */
39
40
41 /***********************************
42 * handle generic standard methods *
43 ***********************************/
44
45 /* this is a special internal method to handle non-standard requests */
46 /* such as GetConsoleMode() for console devices */
47 virtual DWORD _DeviceRequest (PHMHANDLEDATA pHMHandleData,
48 ULONG ulRequestCode,
49 ULONG arg1,
50 ULONG arg2,
51 ULONG arg3,
52 ULONG arg4);
53
54 /* this is a handler method for calls to CreateFile() */
55 virtual DWORD CreateFile (LPCSTR lpFileName,
56 PHMHANDLEDATA pHMHandleData,
57 PVOID lpSecurityAttributes,
58 PHMHANDLEDATA pHMHandleDataTemplate);
59
60 /* this is a handler method for calls to OpenFile() */
61 virtual DWORD OpenFile (LPCSTR lpFileName,
62 PHMHANDLEDATA pHMHandleData,
63 OFSTRUCT* pOFStruct,
64 UINT fuMode);
65
66 /* this is a handler method for calls to CloseHandle() */
67 virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);
68
69 /* this is a handler method for calls to ReadFile() */
70 virtual DWORD ReadFile (PHMHANDLEDATA pHMHandleData,
71 LPCVOID lpBuffer,
72 DWORD nNumberOfBytesToRead,
73 LPDWORD lpNumberOfBytesRead,
74 LPOVERLAPPED lpOverlapped);
75
76 /* this is a handler method for calls to WriteFile() */
77 virtual DWORD WriteFile (PHMHANDLEDATA pHMHandleData,
78 LPCVOID lpBuffer,
79 DWORD nNumberOfBytesToWrite,
80 LPDWORD lpNumberOfBytesWritten,
81 LPOVERLAPPED lpOverlapped);
82
83 /* this is a handler method for calls to GetFileType() */
84 virtual DWORD GetFileType (PHMHANDLEDATA pHMHandleData);
85
86
87 /* this is a handler method for calls to GetFileInformationByHandle() */
88 virtual DWORD GetFileInformationByHandle(PHMHANDLEDATA pHMHandleData,
89 BY_HANDLE_FILE_INFORMATION *pHFI);
90
91 /* this is a handler method for calls to SetEndOfFile() */
92 virtual BOOL SetEndOfFile(PHMHANDLEDATA pHMHandleData);
93
94 /* this is a handler method for calls to SetFileTime() */
95 virtual BOOL SetFileTime (PHMHANDLEDATA pHMHandleData,
96 LPFILETIME pFT1,
97 LPFILETIME pFT2,
98 LPFILETIME pFT3);
99
100 /* this is a handler method for calls to GetFileSize() */
101 virtual DWORD GetFileSize(PHMHANDLEDATA pHMHandleData,
102 PDWORD pSizeHigh);
103
104 /* this is a handler method for calls to SetFilePointer() */
105 virtual DWORD SetFilePointer(PHMHANDLEDATA pHMHandleData,
106 LONG lDistanceToMove,
107 PLONG lpDistanceToMoveHigh,
108 DWORD dwMoveMethod);
109
110 /* this is a handler method for calls to LockFile() */
111 virtual DWORD LockFile(PHMHANDLEDATA pHMHandleData,
112 DWORD arg2,
113 DWORD arg3,
114 DWORD arg4,
115 DWORD arg5);
116
117 /* this is a handler method for calls to LockFileEx() */
118 virtual DWORD LockFileEx(PHMHANDLEDATA pHMHandleData,
119 DWORD dwFlags,
120 DWORD dwReserved,
121 DWORD nNumberOfBytesToLockLow,
122 DWORD nNumberOfBytesToLockHigh,
123 LPOVERLAPPED lpOverlapped);
124
125 /* this is a handler method for calls to UnlockFile() */
126 virtual DWORD UnlockFile(PHMHANDLEDATA pHMHandleData,
127 DWORD arg2,
128 DWORD arg3,
129 DWORD arg4,
130 DWORD arg5);
131
132 /* this is a handler method for calls to UnlockFileEx() */
133 virtual DWORD UnlockFileEx(PHMHANDLEDATA pHMHandleData,
134 DWORD dwFlags,
135 DWORD dwReserved,
136 DWORD nNumberOfBytesToLockLow,
137 DWORD nNumberOfBytesToLockHigh,
138 LPOVERLAPPED lpOverlapped);
139};
140
141
142/*****************************************************************************
143 * Prototypes *
144 *****************************************************************************/
145
146 /* register a new device with the handle manager */
147DWORD HMDeviceRegister(PSZ pszDeviceName,
148 HMDeviceHandler *pDeviceHandler);
149
150
151#endif /* _HM_DEVICE_H_ */
152
Note: See TracBrowser for help on using the repository browser.