source: trunk/src/kernel32/hmfile.h@ 10367

Last change on this file since 10367 was 10073, checked in by sandervl, 22 years ago

Fixed closing of parent file handle by duplicate memory map; Compare file names instead of handles when checking for duplicate file maps

File size: 8.3 KB
Line 
1/* $Id: hmfile.h,v 1.11 2003-05-06 12:06:10 sandervl 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 __HMFILE_H__
10#define __HMFILE_H__
11
12
13/*****************************************************************************
14 * Remark *
15 *****************************************************************************
16 */
17
18
19/*****************************************************************************
20 * Includes *
21 *****************************************************************************/
22
23#include "HMDevice.h"
24#include "HMOpen32.h"
25
26
27class HMFileInfo
28{
29public:
30 HMFileInfo(LPSTR lpszFileName, PVOID lpSecurityAttributes);
31 ~HMFileInfo();
32
33 char *lpszFileName;
34 PVOID lpSecurityAttributes;
35};
36
37/*****************************************************************************
38 * Structures *
39 *****************************************************************************/
40
41class HMDeviceFileClass : public HMDeviceHandler
42{
43public:
44 HMDeviceFileClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {}
45
46 /* this is a handler method for calls to CreateFile() */
47 virtual DWORD CreateFile (LPCSTR lpFileName,
48 PHMHANDLEDATA pHMHandleData,
49 PVOID lpSecurityAttributes,
50 PHMHANDLEDATA pHMHandleDataTemplate);
51
52 /* this is a handler method for calls to OpenFile() */
53 virtual DWORD OpenFile (LPCSTR lpFileName,
54 PHMHANDLEDATA pHMHandleData,
55 OFSTRUCT* pOFStruct,
56 UINT fuMode);
57
58 virtual BOOL DuplicateHandle(HANDLE srchandle, PHMHANDLEDATA pHMHandleData, HANDLE srcprocess,
59 PHMHANDLEDATA pHMSrcHandle,
60 HANDLE destprocess,
61 PHANDLE desthandle,
62 DWORD fdwAccess,
63 BOOL fInherit,
64 DWORD fdwOptions,
65 DWORD fdwOdinOptions);
66
67 virtual BOOL SetHandleInformation(PHMHANDLEDATA pHMHandleData,
68 DWORD dwMask,
69 DWORD dwFlags);
70
71 /* this is a handler method for calls to CloseHandle() */
72 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
73
74 /* this is a handler method for calls to ReadFile/Ex */
75 virtual BOOL ReadFile (PHMHANDLEDATA pHMHandleData,
76 LPCVOID lpBuffer,
77 DWORD nNumberOfBytesToRead,
78 LPDWORD lpNumberOfBytesRead,
79 LPOVERLAPPED lpOverlapped,
80 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
81
82 /* this is a handler method for calls to WriteFile/Ex */
83 virtual BOOL WriteFile (PHMHANDLEDATA pHMHandleData,
84 LPCVOID lpBuffer,
85 DWORD nNumberOfBytesToWrite,
86 LPDWORD lpNumberOfBytesWritten,
87 LPOVERLAPPED lpOverlapped,
88 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
89
90 /* this is a handler method for calls to GetFileType() */
91 virtual DWORD GetFileType (PHMHANDLEDATA pHMHandleData);
92
93 /* this is a handler method for calls to GetFileInformationByHandle() */
94 virtual DWORD GetFileInformationByHandle(PHMHANDLEDATA pHMHandleData,
95 BY_HANDLE_FILE_INFORMATION* pHFI);
96
97 /* this is a handler method for calls to SetEndOfFile() */
98 virtual BOOL SetEndOfFile(PHMHANDLEDATA pHMHandleData);
99
100 /* this is a handler method for calls to SetFileTime() */
101 virtual BOOL SetFileTime (PHMHANDLEDATA pHMHandleData,
102 LPFILETIME pFT1,
103 LPFILETIME pFT2,
104 LPFILETIME pFT3);
105
106 /* this is a handler method for calls to GetFileTime() */
107 virtual BOOL GetFileTime (PHMHANDLEDATA pHMHandleData,
108 LPFILETIME pFT1,
109 LPFILETIME pFT2,
110 LPFILETIME pFT3);
111
112 /* this is a handler method for calls to GetFileSize() */
113 virtual DWORD GetFileSize(PHMHANDLEDATA pHMHandleData,
114 PDWORD pSizeHigh);
115
116 /* this is a handler method for calls to SetFilePointer() */
117 virtual DWORD SetFilePointer(PHMHANDLEDATA pHMHandleData,
118 LONG lDistanceToMove,
119 PLONG lpDistanceToMoveHigh,
120 DWORD dwMoveMethod);
121
122 /* this is a handler method for calls to LockFile() */
123 virtual BOOL LockFile(PHMHANDLEDATA pHMHandleData,
124 DWORD arg2,
125 DWORD arg3,
126 DWORD arg4,
127 DWORD arg5);
128
129 /* this is a handler method for calls to LockFileEx() */
130 virtual BOOL LockFileEx(PHMHANDLEDATA pHMHandleData,
131 DWORD dwFlags,
132 DWORD dwReserved,
133 DWORD nNumberOfBytesToLockLow,
134 DWORD nNumberOfBytesToLockHigh,
135 LPOVERLAPPED lpOverlapped);
136
137 /* this is a handler method for calls to UnlockFile() */
138 virtual BOOL UnlockFile(PHMHANDLEDATA pHMHandleData,
139 DWORD arg2,
140 DWORD arg3,
141 DWORD arg4,
142 DWORD arg5);
143
144 /* this is a handler method for calls to UnlockFileEx() */
145 virtual BOOL UnlockFileEx(PHMHANDLEDATA pHMHandleData,
146 DWORD dwReserved,
147 DWORD nNumberOfBytesToLockLow,
148 DWORD nNumberOfBytesToLockHigh,
149 LPOVERLAPPED lpOverlapped);
150
151 /* this is a handler method for calls to FlushFileBuffers */
152 virtual BOOL FlushFileBuffers(PHMHANDLEDATA pHMHandleData);
153
154 /* this is a handler method for calls to GetOverlappedResult */
155 virtual BOOL GetOverlappedResult(PHMHANDLEDATA pHMHandleData,
156 LPOVERLAPPED arg2,
157 LPDWORD arg3,
158 BOOL arg4);
159
160 virtual BOOL GetFileNameFromHandle(PHMHANDLEDATA pHMHandleData, LPSTR lpszFileName, DWORD cbFileName);
161};
162
163
164class HMDeviceInfoFileClass : public HMDeviceHandler
165{
166public:
167 HMDeviceInfoFileClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {}
168
169 /* this is a handler method for calls to CreateFile() */
170 virtual DWORD CreateFile (LPCSTR lpFileName,
171 PHMHANDLEDATA pHMHandleData,
172 PVOID lpSecurityAttributes,
173 PHMHANDLEDATA pHMHandleDataTemplate);
174
175 /* this is a handler method for calls to CloseHandle() */
176 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
177
178 /* this is a handler method for calls to GetFileTime() */
179 virtual BOOL GetFileTime (PHMHANDLEDATA pHMHandleData,
180 LPFILETIME pFT1,
181 LPFILETIME pFT2,
182 LPFILETIME pFT3);
183
184 /* this is a handler method for calls to GetFileSize() */
185 virtual DWORD GetFileSize(PHMHANDLEDATA pHMHandleData,
186 PDWORD pSizeHigh);
187
188 /* this is a handler method for calls to GetFileType() */
189 virtual DWORD GetFileType (PHMHANDLEDATA pHMHandleData);
190
191 virtual BOOL GetFileNameFromHandle(PHMHANDLEDATA pHMHandleData, LPSTR lpszFileName, DWORD cbFileName);
192
193};
194
195#endif /* __HMFILE_H__ */
196
Note: See TracBrowser for help on using the repository browser.