source: trunk/src/kernel32/oslibdos.h@ 9618

Last change on this file since 9618 was 9617, checked in by sandervl, 23 years ago

added dll load hook and function to override named or ordinal exports

File size: 13.1 KB
Line 
1/* $Id: oslibdos.h,v 1.50 2003-01-05 12:31:24 sandervl Exp $ */
2
3/*
4 * Wrappers for OS/2 Dos* API
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#ifndef __OSLIBDOS_H__
13#define __OSLIBDOS_H__
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#ifdef OS2_INCLUDED
20DWORD error2WinError(APIRET rc,DWORD defaultCode = ERROR_NOT_ENOUGH_MEMORY_W);
21#else
22DWORD error2WinError(DWORD rc,DWORD defaultCode = ERROR_NOT_ENOUGH_MEMORY);
23#endif
24
25void OSLibInitWSeBFileIO();
26
27DWORD OSLibDosChangeMaxFileHandles();
28
29#define ODIN_INCREMENT_MAX_FILEHANDLES 64
30#define ODIN_DEFAULT_MAX_FILEHANDLES 256
31DWORD OSLibDosSetInitialMaxFileHandles(DWORD maxhandles);
32
33BOOL OSLibDosGetFileAttributesEx(LPSTR pszName, ULONG ulDummy, PVOID pBuffer);
34
35#define OSLIB_NOERROR 0
36#define OSLIB_ERROR_INVALID_ADDRESS 1
37#define OSLIB_ERROR_ACCESS_DENIED 2
38#define OSLIB_ERROR_INVALID_PARAMETER 3
39
40#define OSLIB_ACCESS_READONLY 1
41#define OSLIB_ACCESS_READWRITE 2
42#define OSLIB_ACCESS_SHAREDENYNONE 4
43#define OSLIB_ACCESS_SHAREDENYREAD 8
44#define OSLIB_ACCESS_SHAREDENYWRITE 16
45
46DWORD OSLibDosOpen(char *lpszFileName, DWORD flags);
47BOOL OSLibDosClose(DWORD hFile);
48BOOL OSLibDosDelete(char *lpszFileName);
49BOOL OSLibDosCopyFile(LPCSTR lpszOldFile, LPCSTR lpszNewFile, BOOL fFailIfExist);
50BOOL OSLibDosMoveFile(LPCSTR lpszOldFile, LPCSTR lpszNewFile);
51BOOL OSLibDosRemoveDir(LPCSTR lpszDir);
52BOOL OSLibDosCreateDirectory(LPCSTR lpszDir);
53
54#define OSLIB_SETPTR_FILE_CURRENT 0
55#define OSLIB_SETPTR_FILE_BEGIN 1
56#define OSLIB_SETPTR_FILE_END 2
57
58DWORD OSLibDosSetFilePtr(DWORD hFile, DWORD offset, DWORD method);
59
60#define OSLIB_SEARCHDIR 1
61#define OSLIB_SEARCHCURDIR 2
62#define OSLIB_SEARCHFILE 3
63#define OSLIB_SEARCHENV 4
64
65DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name, DWORD length_fullname);
66
67#ifndef FIL_QUERYFULLNAME
68 #define FIL_QUERYFULLNAME 5
69#else
70 #if FIL_QUERYFULLNAME != 5
71 #error "Hmm! FIL_QUERYFULLNAME isn't 5"
72 #endif
73#endif
74
75DWORD OSLibDosQueryPathInfo(CHAR *pszPathName,
76 ULONG ulInfoLevel,
77 PVOID pInfoBuf,
78 ULONG cbInfoBuf);
79
80DWORD OSLibDosCreateFile(CHAR *lpFileName, DWORD dwAccess,
81 DWORD dwShare, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
82 DWORD dwCreation, DWORD dwFlags, HANDLE hTemplate);
83
84DWORD OSLibDosOpenFile(CHAR *lpszFile, UINT fuMode);
85
86BOOL OSLibDosLockFile(DWORD hFile, DWORD dwFlags,
87 DWORD OffsetLow, DWORD OffsetHigh,
88 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
89 LPOVERLAPPED lpOverlapped);
90
91BOOL OSLibDosUnlockFile(DWORD hFile, DWORD OffsetLow, DWORD OffsetHigh,
92 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
93 LPOVERLAPPED lpOverlapped);
94
95BOOL OSLibDosFlushFileBuffers(DWORD hFile);
96BOOL OSLibDosSetEndOfFile(DWORD hFile);
97
98DWORD OSLibDosGetFileSize(DWORD hFile, LPDWORD lpdwFileSizeHigh);
99BOOL OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead);
100BOOL OSLibDosWrite(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesWritten);
101
102BOOL OSLibDosGetFileInformationByHandle(DWORD hFile, BY_HANDLE_FILE_INFORMATION* pHFI);
103
104BOOL OSLibDosSetFileTime(DWORD hFile, LPFILETIME pFT1,
105 LPFILETIME pFT2,
106 LPFILETIME pFT3);
107
108BOOL OSLibDosGetFileTime(DWORD hFile, LPFILETIME pFT1,
109 LPFILETIME pFT2,
110 LPFILETIME pFT3);
111
112DWORD OSLibDosSetFilePointer(DWORD hFile, DWORD OffsetLow, DWORD *OffsetHigh, DWORD method);
113
114DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew);
115DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
116
117BOOL OSLibDosQueryProcTimes(DWORD procid, ULONG *kerneltime, ULONG *usertime);
118
119BOOL OSLibDosTransactNamedPipe( DWORD hNamedPipe,
120 LPVOID lpInBuffer,
121 DWORD nInBufferSize,
122 LPVOID lpOutBuffer,
123 DWORD nOutBufferSize,
124 LPDWORD lpBytesRead,
125 LPOVERLAPPED lpOverlapped);
126
127BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName,
128 LPVOID lpInBuffer,
129 DWORD nInBufferSize,
130 LPVOID lpOutBuffer,
131 DWORD nOutBufferSize,
132 LPDWORD lpBytesRead,
133 DWORD nTimeOut );
134
135BOOL OSLibDosPeekNamedPipe(DWORD hPipe,
136 LPVOID lpvBuffer,
137 DWORD cbBuffer,
138 LPDWORD lpcbRead,
139 LPDWORD lpcbAvail,
140 LPDWORD lpcbMessage);
141
142BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped);
143
144DWORD OSLibDosCreateNamedPipe(LPCTSTR lpName,
145 DWORD dwOpenMode,
146 DWORD dwPipeMode,
147 DWORD nMaxInstances,
148 DWORD nOutBufferSize,
149 DWORD nInBufferSize,
150 DWORD nDefaultTimeOut,
151 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
152
153BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode);
154
155DWORD OSLibDosOpenPipe(LPCTSTR lpName,
156 DWORD fuAccess,
157 DWORD fuShare,
158 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
159 DWORD fuCreate,
160 DWORD fuAttrFlags);
161
162BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
163 DWORD dwTimeout);
164
165BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe);
166
167BOOL OSLibDosCreatePipe(PHANDLE phfRead,
168 PHANDLE phfWrite,
169 LPSECURITY_ATTRIBUTES lpsa,
170 DWORD dwSize);
171
172
173DWORD OSLibDosFindFirst(LPCSTR lpFileName,WIN32_FIND_DATAA* lpFindFileData);
174DWORD OSLibDosFindFirstMulti(LPCSTR lpFileName,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
175BOOL OSLibDosFindNext(DWORD hFindFile,WIN32_FIND_DATAA* lpFindFileData);
176BOOL OSLibDosFindNextMulti(DWORD hFindFile,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
177BOOL OSLibDosFindClose(DWORD hFindFile);
178
179DWORD OSLibGetFileAttributes(LPSTR lpFileName);
180
181DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
182DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
183
184/* Disk/Diskette Control */
185
186#ifndef __OS2_H__
187#define IOCTL_DISK 8
188
189#define DSK_LOCKDRIVE 0x0000
190#define DSK_UNLOCKDRIVE 0x0001
191#define DSK_REDETERMINEMEDIA 0x0002
192#define DSK_SETLOGICALMAP 0x0003
193#define DSK_BEGINFORMAT 0X0004
194#define DSK_BLOCKREMOVABLE 0x0020
195#define DSK_GETLOGICALMAP 0x0021
196#define DSK_UNLOCKEJECTMEDIA 0X0040
197#define DSK_SETDEVICEPARAMS 0x0043
198#define DSK_WRITETRACK 0x0044
199#define DSK_FORMATVERIFY 0x0045
200#define DSK_DISKETTECONTROL 0X005D
201#define DSK_QUERYMEDIASENSE 0X0060
202#define DSK_GETDEVICEPARAMS 0x0063
203#define DSK_READTRACK 0x0064
204#define DSK_VERIFYTRACK 0x0065
205#define DSK_GETLOCKSTATUS 0X0066
206#endif
207
208DWORD SYSTEM OSLibDosDevIOCtl( DWORD hFile, DWORD dwCat, DWORD dwFunc,
209 PVOID pParm, DWORD dwParmMaxLen, DWORD *pdwParmLen,
210 PVOID pData, DWORD dwDataMaxLen, DWORD *pdwDataLen);
211
212BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
213 LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
214 LPDWORD lpTotalNumberOfClusters);
215
216ULONG OSLibDosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
217ULONG OSLibGetDriveType(ULONG diskIndex);
218ULONG OSLibGetLogicalDrives();
219ULONG OSLibGetDriveType(ULONG DriveIndex);
220ULONG OSLibDosQueryCurrentDisk();
221
222BOOL OSLibDosGetDiskGeometry(HANDLE hDisk, DWORD cDisk, void *pGeom);
223
224#ifdef OS2DEF_INCLUDED
225#ifndef FIL_STANDARDL
226 typedef struct _LONGLONG { /* LONGLONG */
227 ULONG ulLo;
228 LONG ulHi;
229 } LONGLONG;
230 typedef LONGLONG *PLONGLONG;
231
232 typedef struct _ULONGLONG { /* ULONGLONG */
233 ULONG ulLo;
234 ULONG ulHi;
235 } ULONGLONG;
236 typedef ULONGLONG *PULONGLONG;
237
238 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
239 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
240 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
241
242 typedef struct _FILESTATUS3L /* fsts3L */
243 {
244 FDATE fdateCreation;
245 FTIME ftimeCreation;
246 FDATE fdateLastAccess;
247 FTIME ftimeLastAccess;
248 FDATE fdateLastWrite;
249 FTIME ftimeLastWrite;
250 LONGLONG cbFile;
251 LONGLONG cbFileAlloc;
252 ULONG attrFile;
253 } FILESTATUS3L;
254 typedef FILESTATUS3L *PFILESTATUS3L;
255
256 /* Large File Support >2GB */
257 typedef struct _FILESTATUS4L /* fsts4L */
258 {
259 FDATE fdateCreation;
260 FTIME ftimeCreation;
261 FDATE fdateLastAccess;
262 FTIME ftimeLastAccess;
263 FDATE fdateLastWrite;
264 FTIME ftimeLastWrite;
265 LONGLONG cbFile;
266 LONGLONG cbFileAlloc;
267 ULONG attrFile;
268 ULONG cbList;
269 } FILESTATUS4L;
270 typedef FILESTATUS4L *PFILESTATUS4L;
271
272 typedef struct _FILELOCKL /* flock */
273 {
274 LONGLONG lOffset;
275 LONGLONG lRange;
276 } FILELOCKL;
277 typedef FILELOCKL *PFILELOCKL;
278#endif
279
280
281 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
282 APIRET OdinDosSetFileSize(HFILE hFile,
283 LONGLONG cbSize);
284
285 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
286 APIRET OdinDosSetFilePtr(HFILE hFile,
287 LONGLONG ib,
288 ULONG method,
289 PLONGLONG ibActual);
290
291 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
292 APIRET OdinDosSetFileLocks(HFILE hFile,
293 PFILELOCKL pflUnlock,
294 PFILELOCKL pflLock,
295 ULONG timeout,
296 ULONG flags);
297
298
299 typedef APIRET (* APIENTRY PROC_DosOpenL)(PCSZ pszFileName, PHFILE phf,
300 PULONG pulAction,
301 LONGLONG cbFile,
302 ULONG ulAttribute,
303 ULONG fsOpenFlags,
304 ULONG fsOpenMode,
305 PEAOP2 peaop2);
306
307 APIRET APIENTRY OdinDosOpenL(PCSZ pszFileName,
308 PHFILE phf,
309 PULONG pulAction,
310 LONGLONG cbFile,
311 ULONG ulAttribute,
312 ULONG fsOpenFlags,
313 ULONG fsOpenMode,
314 PEAOP2 peaop2);
315
316 #ifndef AFNTY_THREAD /* don't declare this if it's allready there */
317
318 typedef struct _MPAFFINITY { /* afnty */
319 ULONG mask[2]; /* CPUs 0 thru 31 in [0], CPUs 32 thru 63 in [1] */
320 } MPAFFINITY;
321 typedef MPAFFINITY *PMPAFFINITY;
322
323
324 /* scope values for QueryThreadAffinity */
325
326 #define AFNTY_THREAD 0
327 #define AFNTY_SYSTEM 1
328
329 #endif
330
331 typedef APIRET (* APIENTRY PROC_DosQueryThreadAffinity)(ULONG scope,
332 PMPAFFINITY pAffinity);
333
334 typedef APIRET (* APIENTRY PROC_DosSetThreadAffinity)(PMPAFFINITY pAffinity);
335
336#endif
337
338ULONG OSLibDosQueryModuleName(ULONG hModule, int cchName, char *pszName);
339ULONG OSLibDosQueryDir(DWORD length, LPSTR lpszCurDir);
340
341HINSTANCE OSLibDosLoadModule(LPSTR szModName);
342void OSLibDosFreeModule(HINSTANCE hinst);
343
344ULONG OSLibDosGetModuleFileName(HMODULE hModule, LPTSTR lpszPath, DWORD cchPath);
345BOOL OSLibDosBeep(DWORD ulFreq, DWORD ulDuration);
346ULONG OSLibDosGetProcAddress(HMODULE hModule, LPCSTR lpszProc);
347
348BOOL OSLibDosSetThreadAffinity(DWORD dwThreadAffinityMask);
349
350#define MASK_SYSTEM 0
351#define MASK_THREAD 1
352BOOL OSLibDosQueryAffinity(DWORD fMaskType, DWORD *pdwThreadAffinityMask);
353
354DWORD OSLibDosDevConfig(PVOID pdevinfo, ULONG item);
355void OSLibDosSleep(ULONG msecs);
356void OSLibDosExitThread(ULONG retcode);
357
358DWORD OSLibDosSetPriority(ULONG tid, int priority);
359
360//functions for physical disk & partition information
361DWORD OSLibDosGetNumPhysDrives();
362
363#ifdef __cplusplus
364}
365#endif
366
367#endif //__OSLIBDOS_H__
368
Note: See TracBrowser for help on using the repository browser.