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

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

volume api updates (LVM)

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