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

Last change on this file since 10010 was 9945, checked in by sandervl, 22 years ago

updates

File size: 13.1 KB
Line 
1/* $Id: oslibdos.h,v 1.52 2003-03-27 14:00:53 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 OSLibDosSetFHState(DWORD hFile, DWORD dwFlags);
116
117DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
118
119BOOL OSLibDosQueryProcTimes(DWORD procid, ULONG *kerneltime, ULONG *usertime);
120
121BOOL OSLibDosTransactNamedPipe( DWORD hNamedPipe,
122 LPVOID lpInBuffer,
123 DWORD nInBufferSize,
124 LPVOID lpOutBuffer,
125 DWORD nOutBufferSize,
126 LPDWORD lpBytesRead,
127 LPOVERLAPPED lpOverlapped);
128
129BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName,
130 LPVOID lpInBuffer,
131 DWORD nInBufferSize,
132 LPVOID lpOutBuffer,
133 DWORD nOutBufferSize,
134 LPDWORD lpBytesRead,
135 DWORD nTimeOut );
136
137BOOL OSLibDosPeekNamedPipe(DWORD hPipe,
138 LPVOID lpvBuffer,
139 DWORD cbBuffer,
140 LPDWORD lpcbRead,
141 LPDWORD lpcbAvail,
142 LPDWORD lpcbMessage);
143
144BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped);
145
146DWORD OSLibDosCreateNamedPipe(LPCTSTR lpName,
147 DWORD dwOpenMode,
148 DWORD dwPipeMode,
149 DWORD nMaxInstances,
150 DWORD nOutBufferSize,
151 DWORD nInBufferSize,
152 DWORD nDefaultTimeOut,
153 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
154
155BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode);
156
157DWORD OSLibDosOpenPipe(LPCTSTR lpName,
158 DWORD fuAccess,
159 DWORD fuShare,
160 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
161 DWORD fuCreate,
162 DWORD fuAttrFlags);
163
164BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
165 DWORD dwTimeout);
166
167BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe);
168
169BOOL OSLibDosCreatePipe(PHANDLE phfRead,
170 PHANDLE phfWrite,
171 LPSECURITY_ATTRIBUTES lpsa,
172 DWORD dwSize);
173
174
175DWORD OSLibDosFindFirst(LPCSTR lpFileName,WIN32_FIND_DATAA* lpFindFileData);
176DWORD OSLibDosFindFirstMulti(LPCSTR lpFileName,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
177BOOL OSLibDosFindNext(DWORD hFindFile,WIN32_FIND_DATAA* lpFindFileData);
178BOOL OSLibDosFindNextMulti(DWORD hFindFile,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
179BOOL OSLibDosFindClose(DWORD hFindFile);
180
181DWORD OSLibGetFileAttributes(LPSTR lpFileName);
182
183DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
184DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
185
186/* Disk/Diskette Control */
187
188#ifndef __OS2_H__
189#define IOCTL_DISK 8
190
191#define DSK_LOCKDRIVE 0x0000
192#define DSK_UNLOCKDRIVE 0x0001
193#define DSK_REDETERMINEMEDIA 0x0002
194#define DSK_SETLOGICALMAP 0x0003
195#define DSK_BEGINFORMAT 0X0004
196#define DSK_BLOCKREMOVABLE 0x0020
197#define DSK_GETLOGICALMAP 0x0021
198#define DSK_UNLOCKEJECTMEDIA 0X0040
199#define DSK_SETDEVICEPARAMS 0x0043
200#define DSK_WRITETRACK 0x0044
201#define DSK_FORMATVERIFY 0x0045
202#define DSK_DISKETTECONTROL 0X005D
203#define DSK_QUERYMEDIASENSE 0X0060
204#define DSK_GETDEVICEPARAMS 0x0063
205#define DSK_READTRACK 0x0064
206#define DSK_VERIFYTRACK 0x0065
207#define DSK_GETLOCKSTATUS 0X0066
208#endif
209
210DWORD SYSTEM OSLibDosDevIOCtl( DWORD hFile, DWORD dwCat, DWORD dwFunc,
211 PVOID pParm, DWORD dwParmMaxLen, DWORD *pdwParmLen,
212 PVOID pData, DWORD dwDataMaxLen, DWORD *pdwDataLen);
213
214BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
215 LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
216 LPDWORD lpTotalNumberOfClusters);
217
218ULONG OSLibDosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
219ULONG OSLibGetDriveType(ULONG diskIndex);
220ULONG OSLibGetLogicalDrives();
221ULONG OSLibGetDriveType(ULONG DriveIndex);
222ULONG OSLibDosQueryCurrentDisk();
223
224BOOL OSLibDosGetDiskGeometry(HANDLE hDisk, DWORD cDisk, void *pGeom);
225
226#ifdef OS2DEF_INCLUDED
227#ifndef FIL_STANDARDL
228 typedef struct _LONGLONG { /* LONGLONG */
229 ULONG ulLo;
230 LONG ulHi;
231 } LONGLONG;
232 typedef LONGLONG *PLONGLONG;
233
234 typedef struct _ULONGLONG { /* ULONGLONG */
235 ULONG ulLo;
236 ULONG ulHi;
237 } ULONGLONG;
238 typedef ULONGLONG *PULONGLONG;
239
240 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
241 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
242 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
243
244 typedef struct _FILESTATUS3L /* fsts3L */
245 {
246 FDATE fdateCreation;
247 FTIME ftimeCreation;
248 FDATE fdateLastAccess;
249 FTIME ftimeLastAccess;
250 FDATE fdateLastWrite;
251 FTIME ftimeLastWrite;
252 LONGLONG cbFile;
253 LONGLONG cbFileAlloc;
254 ULONG attrFile;
255 } FILESTATUS3L;
256 typedef FILESTATUS3L *PFILESTATUS3L;
257
258 /* Large File Support >2GB */
259 typedef struct _FILESTATUS4L /* fsts4L */
260 {
261 FDATE fdateCreation;
262 FTIME ftimeCreation;
263 FDATE fdateLastAccess;
264 FTIME ftimeLastAccess;
265 FDATE fdateLastWrite;
266 FTIME ftimeLastWrite;
267 LONGLONG cbFile;
268 LONGLONG cbFileAlloc;
269 ULONG attrFile;
270 ULONG cbList;
271 } FILESTATUS4L;
272 typedef FILESTATUS4L *PFILESTATUS4L;
273
274 typedef struct _FILELOCKL /* flock */
275 {
276 LONGLONG lOffset;
277 LONGLONG lRange;
278 } FILELOCKL;
279 typedef FILELOCKL *PFILELOCKL;
280#endif
281
282
283 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
284 APIRET OdinDosSetFileSize(HFILE hFile,
285 LONGLONG cbSize);
286
287 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
288 APIRET OdinDosSetFilePtr(HFILE hFile,
289 LONGLONG ib,
290 ULONG method,
291 PLONGLONG ibActual);
292
293 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
294 APIRET OdinDosSetFileLocks(HFILE hFile,
295 PFILELOCKL pflUnlock,
296 PFILELOCKL pflLock,
297 ULONG timeout,
298 ULONG flags);
299
300
301 typedef APIRET (* APIENTRY PROC_DosOpenL)(PCSZ pszFileName, PHFILE phf,
302 PULONG pulAction,
303 LONGLONG cbFile,
304 ULONG ulAttribute,
305 ULONG fsOpenFlags,
306 ULONG fsOpenMode,
307 PEAOP2 peaop2);
308
309 APIRET APIENTRY OdinDosOpenL(PCSZ pszFileName,
310 PHFILE phf,
311 PULONG pulAction,
312 LONGLONG cbFile,
313 ULONG ulAttribute,
314 ULONG fsOpenFlags,
315 ULONG fsOpenMode,
316 PEAOP2 peaop2);
317
318 #ifndef AFNTY_THREAD /* don't declare this if it's allready there */
319
320 typedef struct _MPAFFINITY { /* afnty */
321 ULONG mask[2]; /* CPUs 0 thru 31 in [0], CPUs 32 thru 63 in [1] */
322 } MPAFFINITY;
323 typedef MPAFFINITY *PMPAFFINITY;
324
325
326 /* scope values for QueryThreadAffinity */
327
328 #define AFNTY_THREAD 0
329 #define AFNTY_SYSTEM 1
330
331 #endif
332
333 typedef APIRET (* APIENTRY PROC_DosQueryThreadAffinity)(ULONG scope,
334 PMPAFFINITY pAffinity);
335
336 typedef APIRET (* APIENTRY PROC_DosSetThreadAffinity)(PMPAFFINITY pAffinity);
337
338#endif
339
340ULONG OSLibDosQueryModuleName(ULONG hModule, int cchName, char *pszName);
341ULONG OSLibDosQueryDir(DWORD length, LPSTR lpszCurDir);
342
343HINSTANCE OSLibDosLoadModule(LPSTR szModName);
344void OSLibDosFreeModule(HINSTANCE hinst);
345
346ULONG OSLibDosGetModuleFileName(HMODULE hModule, LPTSTR lpszPath, DWORD cchPath);
347BOOL OSLibDosBeep(DWORD ulFreq, DWORD ulDuration);
348ULONG OSLibDosGetProcAddress(HMODULE hModule, LPCSTR lpszProc);
349
350BOOL OSLibDosSetThreadAffinity(DWORD dwThreadAffinityMask);
351
352#define MASK_SYSTEM 0
353#define MASK_THREAD 1
354BOOL OSLibDosQueryAffinity(DWORD fMaskType, DWORD *pdwThreadAffinityMask);
355
356DWORD OSLibDosDevConfig(PVOID pdevinfo, ULONG item);
357void OSLibDosSleep(ULONG msecs);
358
359//functions for physical disk & partition information
360DWORD OSLibDosGetNumPhysDrives();
361
362#ifdef __cplusplus
363}
364#endif
365
366#endif //__OSLIBDOS_H__
367
Note: See TracBrowser for help on using the repository browser.