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

Last change on this file since 6049 was 6049, checked in by sandervl, 24 years ago

semaphore rewrite (not activated)

File size: 11.8 KB
Line 
1/* $Id: oslibdos.h,v 1.31 2001-06-19 10:50:26 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);
79
80#define OSLIB_SETPTR_FILE_CURRENT 0
81#define OSLIB_SETPTR_FILE_BEGIN 1
82#define OSLIB_SETPTR_FILE_END 2
83
84DWORD OSLibDosSetFilePtr(DWORD hFile, DWORD offset, DWORD method);
85
86#define OSLIB_SEARCHDIR 1
87#define OSLIB_SEARCHCURDIR 2
88#define OSLIB_SEARCHFILE 3
89#define OSLIB_SEARCHENV 4
90
91DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name, DWORD length_fullname);
92
93#ifndef FIL_QUERYFULLNAME
94 #define FIL_QUERYFULLNAME 5
95#else
96 #if FIL_QUERYFULLNAME != 5
97 #error "Hmm! FIL_QUERYFULLNAME isn't 5"
98 #endif
99#endif
100
101DWORD OSLibDosQueryPathInfo(CHAR *pszPathName,
102 ULONG ulInfoLevel,
103 PVOID pInfoBuf,
104 ULONG cbInfoBuf);
105
106DWORD OSLibDosCreateFile(CHAR *lpFileName, DWORD dwAccess,
107 DWORD dwShare, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
108 DWORD dwCreation, DWORD dwFlags, HANDLE hTemplate);
109
110DWORD OSLibDosOpenFile(CHAR *lpszFile, UINT fuMode);
111
112BOOL OSLibDosLockFile(DWORD hFile, DWORD dwFlags,
113 DWORD OffsetLow, DWORD OffsetHigh,
114 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
115 LPOVERLAPPED lpOverlapped);
116
117BOOL OSLibDosUnlockFile(DWORD hFile, DWORD OffsetLow, DWORD OffsetHigh,
118 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
119 LPOVERLAPPED lpOverlapped);
120
121BOOL OSLibDosFlushFileBuffers(DWORD hFile);
122BOOL OSLibDosSetEndOfFile(DWORD hFile);
123
124DWORD OSLibDosGetFileSize(DWORD hFile, LPDWORD lpdwFileSizeHigh);
125BOOL OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead);
126BOOL OSLibDosWrite(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesWritten);
127
128BOOL OSLibDosGetFileInformationByHandle(DWORD hFile, BY_HANDLE_FILE_INFORMATION* pHFI);
129
130BOOL OSLibDosSetFileTime(DWORD hFile, WORD creationdate, WORD creationtime,
131 WORD lastaccessdate, WORD lastaccesstime,
132 WORD lastwritedate, WORD lastwritetime);
133
134BOOL OSLibDosGetFileTime(DWORD hFile, WORD *creationdate, WORD *creationtime,
135 WORD *lastaccessdate, WORD *lastaccesstime,
136 WORD *lastwritedate, WORD *lastwritetime);
137
138DWORD OSLibDosSetFilePointer(DWORD hFile, DWORD OffsetLow, DWORD *OffsetHigh, DWORD method);
139
140DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew);
141DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
142
143#ifndef PAGE_SIZE
144#define PAGE_SIZE 4096
145#endif
146
147void OSLibDosDisableHardError(BOOL fTurnOff);
148BOOL OSLibDosQueryProcTimes(DWORD procid, ULONG *kerneltime, ULONG *usertime);
149
150BOOL OSLibDosTransactNamedPipe( DWORD hNamedPipe,
151 LPVOID lpInBuffer,
152 DWORD nInBufferSize,
153 LPVOID lpOutBuffer,
154 DWORD nOutBufferSize,
155 LPDWORD lpBytesRead,
156 LPOVERLAPPED lpOverlapped);
157
158BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName,
159 LPVOID lpInBuffer,
160 DWORD nInBufferSize,
161 LPVOID lpOutBuffer,
162 DWORD nOutBufferSize,
163 LPDWORD lpBytesRead,
164 DWORD nTimeOut );
165
166BOOL OSLibDosPeekNamedPipe(DWORD hPipe,
167 LPVOID lpvBuffer,
168 DWORD cbBuffer,
169 LPDWORD lpcbRead,
170 LPDWORD lpcbAvail,
171 LPDWORD lpcbMessage);
172
173BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped);
174
175DWORD OSLibDosCreateNamedPipe(LPCTSTR lpName,
176 DWORD dwOpenMode,
177 DWORD dwPipeMode,
178 DWORD nMaxInstances,
179 DWORD nOutBufferSize,
180 DWORD nInBufferSize,
181 DWORD nDefaultTimeOut,
182 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
183
184BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode);
185
186DWORD OSLibDosOpenPipe(LPCTSTR lpName,
187 DWORD fuAccess,
188 DWORD fuShare,
189 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
190 DWORD fuCreate,
191 DWORD fuAttrFlags);
192
193BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
194 DWORD dwTimeout);
195
196BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe);
197
198BOOL OSLibDosCreatePipe(PHANDLE phfRead,
199 PHANDLE phfWrite,
200 LPSECURITY_ATTRIBUTES lpsa,
201 DWORD dwSize);
202
203
204DWORD OSLibDosFindFirst(LPCSTR lpFileName,WIN32_FIND_DATAA* lpFindFileData);
205DWORD OSLibDosFindFirstMulti(LPCSTR lpFileName,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
206BOOL OSLibDosFindNext(DWORD hFindFile,WIN32_FIND_DATAA* lpFindFileData);
207BOOL OSLibDosFindNextMulti(DWORD hFindFile,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
208BOOL OSLibDosFindClose(DWORD hFindFile);
209
210DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
211DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
212DWORD OSLibDosDevIOCtl( DWORD hFile, DWORD dwCat, DWORD dwFunc,
213 PVOID pParm, DWORD dwParmMaxLen, DWORD *pdwParmLen,
214 PVOID pData, DWORD dwDataMaxLen, DWORD *pdwDataLen);
215
216BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
217 LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
218 LPDWORD lpTotalNumberOfClusters);
219
220ULONG OSLibDosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
221ULONG OSLibGetDriveType(ULONG diskIndex);
222ULONG OSLibGetLogicalDrives();
223ULONG OSLibDosQueryCurrentDisk();
224
225BOOL OSLibDosGetDiskGeometry(DWORD cDisk, void *pGeom);
226
227#ifdef OS2DEF_INCLUDED
228#ifndef FIL_STANDARDL
229 typedef struct _LONGLONG { /* LONGLONG */
230 ULONG ulLo;
231 LONG ulHi;
232 } LONGLONG;
233 typedef LONGLONG *PLONGLONG;
234
235 typedef struct _ULONGLONG { /* ULONGLONG */
236 ULONG ulLo;
237 ULONG ulHi;
238 } ULONGLONG;
239 typedef ULONGLONG *PULONGLONG;
240
241 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
242 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
243 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
244
245 typedef struct _FILESTATUS3L /* fsts3L */
246 {
247 FDATE fdateCreation;
248 FTIME ftimeCreation;
249 FDATE fdateLastAccess;
250 FTIME ftimeLastAccess;
251 FDATE fdateLastWrite;
252 FTIME ftimeLastWrite;
253 LONGLONG cbFile;
254 LONGLONG cbFileAlloc;
255 ULONG attrFile;
256 } FILESTATUS3L;
257 typedef FILESTATUS3L *PFILESTATUS3L;
258
259 /* Large File Support >2GB */
260 typedef struct _FILESTATUS4L /* fsts4L */
261 {
262 FDATE fdateCreation;
263 FTIME ftimeCreation;
264 FDATE fdateLastAccess;
265 FTIME ftimeLastAccess;
266 FDATE fdateLastWrite;
267 FTIME ftimeLastWrite;
268 LONGLONG cbFile;
269 LONGLONG cbFileAlloc;
270 ULONG attrFile;
271 ULONG cbList;
272 } FILESTATUS4L;
273 typedef FILESTATUS4L *PFILESTATUS4L;
274
275 typedef struct _FILELOCKL /* flock */
276 {
277 LONGLONG lOffset;
278 LONGLONG lRange;
279 } FILELOCKL;
280 typedef FILELOCKL *PFILELOCKL;
281#endif
282
283
284 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
285 APIRET OdinDosSetFileSize(HFILE hFile,
286 LONGLONG cbSize);
287
288 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
289 APIRET OdinDosSetFilePtr(HFILE hFile,
290 LONGLONG ib,
291 ULONG method,
292 PLONGLONG ibActual);
293
294 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
295 APIRET OdinDosSetFileLocks(HFILE hFile,
296 PFILELOCKL pflUnlock,
297 PFILELOCKL pflLock,
298 ULONG timeout,
299 ULONG flags);
300#endif
301
302#endif
303
304ULONG OSLibDosQueryModuleName(ULONG hModule, int cchName, char *pszName);
305ULONG OSLibDosQueryDir(DWORD length, LPSTR lpszCurDir);
306
307HINSTANCE OSLibDosLoadModule(LPSTR szModName);
308void OSLibDosFreeModule(HINSTANCE hinst);
Note: See TracBrowser for help on using the repository browser.