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

Last change on this file since 3642 was 3642, checked in by sandervl, 25 years ago

Rewrote file io apis

File size: 9.9 KB
Line 
1/* $Id: oslibdos.h,v 1.16 2000-06-01 11:28:48 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
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);
71DWORD OSLibDosClose(DWORD hFile);
72BOOL OSLibDosDelete(char *lpszFileName);
73
74#define OSLIB_SETPTR_FILE_CURRENT 1
75#define OSLIB_SETPTR_FILE_BEGIN 2
76#define OSLIB_SETPTR_FILE_END 3
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
87DWORD OSLibDosCreateFile(CHAR *lpFileName, DWORD dwAccess,
88 DWORD dwShare, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
89 DWORD dwCreation, DWORD dwFlags, HANDLE hTemplate);
90
91DWORD OSLibDosOpenFile(CHAR *lpszFile, UINT fuMode);
92
93BOOL OSLibDosLockFile(DWORD hFile, DWORD dwFlags,
94 DWORD OffsetLow, DWORD OffsetHigh,
95 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
96 LPOVERLAPPED lpOverlapped);
97
98BOOL OSLibDosUnlockFile(DWORD hFile, DWORD OffsetLow, DWORD OffsetHigh,
99 DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
100 LPOVERLAPPED lpOverlapped);
101
102BOOL OSLibDosFlushFileBuffers(DWORD hFile);
103BOOL OSLibDosSetEndOfFile(DWORD hFile);
104
105DWORD OSLibDosGetFileSize(DWORD hFile, LPDWORD lpdwFileSizeHigh);
106BOOL OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead);
107BOOL OSLibDosWrite(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesWritten);
108
109BOOL OSLibDosGetFileInformationByHandle(DWORD hFile, BY_HANDLE_FILE_INFORMATION* pHFI);
110
111BOOL OSLibDosSetFileTime(DWORD hFile, WORD creationdate, WORD creationtime,
112 WORD lastaccessdate, WORD lastaccesstime,
113 WORD lastwritedate, WORD lastwritetime);
114
115BOOL OSLibDosGetFileTime(DWORD hFile, WORD *creationdate, WORD *creationtime,
116 WORD *lastaccessdate, WORD *lastaccesstime,
117 WORD *lastwritedate, WORD *lastwritetime);
118
119DWORD OSLibDosSetFilePointer(DWORD hFile, DWORD OffsetLow, DWORD *OffsetHigh, DWORD method);
120
121DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew);
122DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
123
124#ifndef PAGE_SIZE
125#define PAGE_SIZE 4096
126#endif
127
128void OSLibDosDisableHardError(BOOL fTurnOff);
129BOOL OSLibDosQueryProcTimes(DWORD procid, ULONG *kerneltime, ULONG *usertime);
130
131BOOL OSLibDosTransactNamedPipe( DWORD hNamedPipe,
132 LPVOID lpInBuffer,
133 DWORD nInBufferSize,
134 LPVOID lpOutBuffer,
135 DWORD nOutBufferSize,
136 LPDWORD lpBytesRead,
137 LPOVERLAPPED lpOverlapped);
138
139BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName,
140 LPVOID lpInBuffer,
141 DWORD nInBufferSize,
142 LPVOID lpOutBuffer,
143 DWORD nOutBufferSize,
144 LPDWORD lpBytesRead,
145 DWORD nTimeOut );
146
147BOOL OSLibDosPeekNamedPipe(DWORD hPipe,
148 LPVOID lpvBuffer,
149 DWORD cbBuffer,
150 LPDWORD lpcbRead,
151 LPDWORD lpcbAvail,
152 LPDWORD lpcbMessage);
153
154BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped);
155
156DWORD OSLibDosCreateNamedPipe(LPCTSTR lpName,
157 DWORD dwOpenMode,
158 DWORD dwPipeMode,
159 DWORD nMaxInstances,
160 DWORD nOutBufferSize,
161 DWORD nInBufferSize,
162 DWORD nDefaultTimeOut,
163 void* lpSecurityAttributes);
164
165BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
166 DWORD dwTimeout);
167
168BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe);
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 OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
177DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
178
179
180#ifdef OS2DEF_INCLUDED
181#ifndef FIL_STANDARDL
182 typedef struct _LONGLONG { /* LONGLONG */
183 ULONG ulLo;
184 LONG ulHi;
185 } LONGLONG;
186 typedef LONGLONG *PLONGLONG;
187
188 typedef struct _ULONGLONG { /* ULONGLONG */
189 ULONG ulLo;
190 ULONG ulHi;
191 } ULONGLONG;
192 typedef ULONGLONG *PULONGLONG;
193
194 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
195 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
196 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
197
198 typedef struct _FILESTATUS3L /* fsts3L */
199 {
200 FDATE fdateCreation;
201 FTIME ftimeCreation;
202 FDATE fdateLastAccess;
203 FTIME ftimeLastAccess;
204 FDATE fdateLastWrite;
205 FTIME ftimeLastWrite;
206 LONGLONG cbFile;
207 LONGLONG cbFileAlloc;
208 ULONG attrFile;
209 } FILESTATUS3L;
210 typedef FILESTATUS3L *PFILESTATUS3L;
211
212 /* Large File Support >2GB */
213 typedef struct _FILESTATUS4L /* fsts4L */
214 {
215 FDATE fdateCreation;
216 FTIME ftimeCreation;
217 FDATE fdateLastAccess;
218 FTIME ftimeLastAccess;
219 FDATE fdateLastWrite;
220 FTIME ftimeLastWrite;
221 LONGLONG cbFile;
222 LONGLONG cbFileAlloc;
223 ULONG attrFile;
224 ULONG cbList;
225 } FILESTATUS4L;
226 typedef FILESTATUS4L *PFILESTATUS4L;
227
228 typedef struct _FILELOCKL /* flock */
229 {
230 LONGLONG lOffset;
231 LONGLONG lRange;
232 } FILELOCKL;
233 typedef FILELOCKL *PFILELOCKL;
234#endif
235
236
237 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
238 APIRET OdinDosSetFileSize(HFILE hFile,
239 LONGLONG cbSize);
240
241 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
242 APIRET OdinDosSetFilePtr(HFILE hFile,
243 LONGLONG ib,
244 ULONG method,
245 PLONGLONG ibActual);
246
247 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
248 APIRET OdinDosSetFileLocks(HFILE hFile,
249 PFILELOCKL pflUnlock,
250 PFILELOCKL pflLock,
251 ULONG timeout,
252 ULONG flags);
253#endif
254
255#endif
Note: See TracBrowser for help on using the repository browser.