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

Last change on this file since 22018 was 21916, checked in by dmik, 14 years ago

Merge branch gcc-kmk to trunk.

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