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

Last change on this file since 4319 was 4319, checked in by phaller, 25 years ago

GlobalMemoryStatus implemented without Open32

File size: 11.0 KB
Line 
1/* $Id: oslibdos.h,v 1.24 2000-09-25 04:35:00 phaller 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
16void OSLibInitWSeBFileIO();
17
18DWORD OSLibDosAliasMem(LPVOID pb, ULONG cb, LPVOID *ppbAlias, ULONG fl);
19DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD size, DWORD flags);
20DWORD OSLibDosFreeMem(LPVOID lpMemAddr);
21DWORD OSLibDosQueryMem(LPVOID lpMemAddr, DWORD *lpRangeSize, DWORD *lpAttr);
22DWORD OSLibDosSetMem(LPVOID lpMemAddr, DWORD size, DWORD flags);
23DWORD OSLibDosAllocSharedMem(LPVOID *lplpMemAddr, DWORD size, DWORD flags, LPSTR name);
24DWORD OSLibDosGetNamedSharedMem(LPVOID *lplpMemAddr, LPSTR name);
25DWORD OSLibDosChangeMaxFileHandles();
26
27#define ODIN_INCREMENT_MAX_FILEHANDLES 64
28#define ODIN_DEFAULT_MAX_FILEHANDLES 256
29DWORD OSLibDosSetInitialMaxFileHandles(DWORD maxhandles);
30
31BOOL OSLibDosGetFileAttributesEx(LPSTR pszName, ULONG ulDummy, PVOID pBuffer);
32
33#define OSLIB_NOERROR 0
34#define OSLIB_ERROR_INVALID_ADDRESS 1
35#define OSLIB_ERROR_ACCESS_DENIED 2
36#define OSLIB_ERROR_INVALID_PARAMETER 3
37
38#ifndef __OS2_H__
39
40/* Access protection */
41#define PAG_READ 0x00000001U /* read access */
42#define PAG_WRITE 0x00000002U /* write access */
43#define PAG_EXECUTE 0x00000004U /* execute access */
44#define PAG_GUARD 0x00000008U /* guard protection */
45#define PAG_DEFAULT 0x00000400U /* default (initial) access */
46
47/* Commit */
48#define PAG_COMMIT 0x00000010U /* commit storage */
49#define PAG_DECOMMIT 0x00000020U /* decommit storage */
50
51/* Allocation attributes */
52#define OBJ_TILE 0x00000040U /* tile object */
53#define OBJ_PROTECTED 0x00000080U /* protect object */
54#define OBJ_GETTABLE 0x00000100U /* gettable by other processes */
55#define OBJ_GIVEABLE 0x00000200U /* giveable to other processes */
56
57/* Allocation type (returned from DosQueryMem) */
58#define PAG_SHARED 0x00002000U /* shared object */
59#define PAG_FREE 0x00004000U /* pages are free */
60#define PAG_BASE 0x00010000U /* first page in object */
61
62#endif
63
64#define OSLIB_ACCESS_READONLY 1
65#define OSLIB_ACCESS_READWRITE 2
66#define OSLIB_ACCESS_SHAREDENYNONE 4
67#define OSLIB_ACCESS_SHAREDENYREAD 8
68#define OSLIB_ACCESS_SHAREDENYWRITE 16
69
70DWORD OSLibDosOpen(char *lpszFileName, DWORD flags);
71BOOL OSLibDosClose(DWORD hFile);
72BOOL OSLibDosDelete(char *lpszFileName);
73
74#define OSLIB_SETPTR_FILE_CURRENT 0
75#define OSLIB_SETPTR_FILE_BEGIN 1
76#define OSLIB_SETPTR_FILE_END 2
77
78DWORD OSLibDosSetFilePtr(DWORD hFile, DWORD offset, DWORD method);
79
80#define OSLIB_SEARCHDIR 1
81#define OSLIB_SEARCHCURDIR 2
82#define OSLIB_SEARCHFILE 3
83#define OSLIB_SEARCHENV 4
84
85DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name, DWORD length_fullname);
86
87#ifndef FIL_QUERYFULLNAME
88 #define FIL_QUERYFULLNAME 5
89#else
90 #if FIL_QUERYFULLNAME != 5
91 #error "Hmm! FIL_QUERYFULLNAME isn't 5"
92 #endif
93#endif
94
95DWORD OSLibDosQueryPathInfo(CHAR *pszPathName,
96 ULONG ulInfoLevel,
97 PVOID pInfoBuf,
98 ULONG cbInfoBuf);
99
100DWORD OSLibDosCreateFile(CHAR *lpFileName, DWORD dwAccess,
101 DWORD dwShare, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
102 DWORD dwCreation, DWORD dwFlags, HANDLE hTemplate);
103
104DWORD OSLibDosOpenFile(CHAR *lpszFile, UINT fuMode);
105
106BOOL OSLibDosLockFile(DWORD hFile, DWORD dwFlags,
107 DWORD OffsetLow, DWORD OffsetHigh,
108 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
109 LPOVERLAPPED lpOverlapped);
110
111BOOL OSLibDosUnlockFile(DWORD hFile, DWORD OffsetLow, DWORD OffsetHigh,
112 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
113 LPOVERLAPPED lpOverlapped);
114
115BOOL OSLibDosFlushFileBuffers(DWORD hFile);
116BOOL OSLibDosSetEndOfFile(DWORD hFile);
117
118DWORD OSLibDosGetFileSize(DWORD hFile, LPDWORD lpdwFileSizeHigh);
119BOOL OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead);
120BOOL OSLibDosWrite(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesWritten);
121
122BOOL OSLibDosGetFileInformationByHandle(DWORD hFile, BY_HANDLE_FILE_INFORMATION* pHFI);
123
124BOOL OSLibDosSetFileTime(DWORD hFile, WORD creationdate, WORD creationtime,
125 WORD lastaccessdate, WORD lastaccesstime,
126 WORD lastwritedate, WORD lastwritetime);
127
128BOOL OSLibDosGetFileTime(DWORD hFile, WORD *creationdate, WORD *creationtime,
129 WORD *lastaccessdate, WORD *lastaccesstime,
130 WORD *lastwritedate, WORD *lastwritetime);
131
132DWORD OSLibDosSetFilePointer(DWORD hFile, DWORD OffsetLow, DWORD *OffsetHigh, DWORD method);
133
134DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew);
135DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
136
137#ifndef PAGE_SIZE
138#define PAGE_SIZE 4096
139#endif
140
141void OSLibDosDisableHardError(BOOL fTurnOff);
142BOOL OSLibDosQueryProcTimes(DWORD procid, ULONG *kerneltime, ULONG *usertime);
143
144BOOL OSLibDosTransactNamedPipe( DWORD hNamedPipe,
145 LPVOID lpInBuffer,
146 DWORD nInBufferSize,
147 LPVOID lpOutBuffer,
148 DWORD nOutBufferSize,
149 LPDWORD lpBytesRead,
150 LPOVERLAPPED lpOverlapped);
151
152BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName,
153 LPVOID lpInBuffer,
154 DWORD nInBufferSize,
155 LPVOID lpOutBuffer,
156 DWORD nOutBufferSize,
157 LPDWORD lpBytesRead,
158 DWORD nTimeOut );
159
160BOOL OSLibDosPeekNamedPipe(DWORD hPipe,
161 LPVOID lpvBuffer,
162 DWORD cbBuffer,
163 LPDWORD lpcbRead,
164 LPDWORD lpcbAvail,
165 LPDWORD lpcbMessage);
166
167BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped);
168
169DWORD OSLibDosCreateNamedPipe(LPCTSTR lpName,
170 DWORD dwOpenMode,
171 DWORD dwPipeMode,
172 DWORD nMaxInstances,
173 DWORD nOutBufferSize,
174 DWORD nInBufferSize,
175 DWORD nDefaultTimeOut,
176 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
177
178BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
179 DWORD dwTimeout);
180
181BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe);
182
183BOOL OSLibDosCreatePipe(PHANDLE phfRead,
184 PHANDLE phfWrite,
185 LPSECURITY_ATTRIBUTES lpsa,
186 DWORD dwSize);
187
188
189DWORD OSLibDosFindFirst(LPCSTR lpFileName,WIN32_FIND_DATAA* lpFindFileData);
190DWORD OSLibDosFindFirstMulti(LPCSTR lpFileName,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
191BOOL OSLibDosFindNext(DWORD hFindFile,WIN32_FIND_DATAA* lpFindFileData);
192BOOL OSLibDosFindNextMulti(DWORD hFindFile,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
193BOOL OSLibDosFindClose(DWORD hFindFile);
194
195DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
196DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
197DWORD OSLibDosDevIOCtl( DWORD hFile, DWORD dwCat, DWORD dwFunc,
198 PVOID pParm, DWORD dwParmMaxLen, DWORD *pdwParmLen,
199 PVOID pData, DWORD dwDataMaxLen, DWORD *pdwDataLen);
200
201BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
202 LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
203 LPDWORD lpTotalNumberOfClusters);
204
205ULONG OSLibDosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
206
207
208#ifdef OS2DEF_INCLUDED
209#ifndef FIL_STANDARDL
210 typedef struct _LONGLONG { /* LONGLONG */
211 ULONG ulLo;
212 LONG ulHi;
213 } LONGLONG;
214 typedef LONGLONG *PLONGLONG;
215
216 typedef struct _ULONGLONG { /* ULONGLONG */
217 ULONG ulLo;
218 ULONG ulHi;
219 } ULONGLONG;
220 typedef ULONGLONG *PULONGLONG;
221
222 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
223 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
224 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
225
226 typedef struct _FILESTATUS3L /* fsts3L */
227 {
228 FDATE fdateCreation;
229 FTIME ftimeCreation;
230 FDATE fdateLastAccess;
231 FTIME ftimeLastAccess;
232 FDATE fdateLastWrite;
233 FTIME ftimeLastWrite;
234 LONGLONG cbFile;
235 LONGLONG cbFileAlloc;
236 ULONG attrFile;
237 } FILESTATUS3L;
238 typedef FILESTATUS3L *PFILESTATUS3L;
239
240 /* Large File Support >2GB */
241 typedef struct _FILESTATUS4L /* fsts4L */
242 {
243 FDATE fdateCreation;
244 FTIME ftimeCreation;
245 FDATE fdateLastAccess;
246 FTIME ftimeLastAccess;
247 FDATE fdateLastWrite;
248 FTIME ftimeLastWrite;
249 LONGLONG cbFile;
250 LONGLONG cbFileAlloc;
251 ULONG attrFile;
252 ULONG cbList;
253 } FILESTATUS4L;
254 typedef FILESTATUS4L *PFILESTATUS4L;
255
256 typedef struct _FILELOCKL /* flock */
257 {
258 LONGLONG lOffset;
259 LONGLONG lRange;
260 } FILELOCKL;
261 typedef FILELOCKL *PFILELOCKL;
262#endif
263
264
265 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
266 APIRET OdinDosSetFileSize(HFILE hFile,
267 LONGLONG cbSize);
268
269 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
270 APIRET OdinDosSetFilePtr(HFILE hFile,
271 LONGLONG ib,
272 ULONG method,
273 PLONGLONG ibActual);
274
275 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
276 APIRET OdinDosSetFileLocks(HFILE hFile,
277 PFILELOCKL pflUnlock,
278 PFILELOCKL pflLock,
279 ULONG timeout,
280 ULONG flags);
281#endif
282
283#endif
284
285ULONG OSLibDosQueryModuleName(ULONG hModule, int cchName, char *pszName);
Note: See TracBrowser for help on using the repository browser.