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

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

Rewrote GetFileAttributesA & translate filename used from Windows to OS/2 codepage

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