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

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

Temp. Fix: CreatePipe() implemented. Needs HM support though

File size: 10.0 KB
Line 
1/* $Id: oslibdos.h,v 1.19 2000-06-28 21:05:57 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
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
170BOOL OSLibDosCreatePipe(PHANDLE phfRead,
171 PHANDLE phfWrite,
172 void* lpsa,
173 DWORD dwSize);
174
175
176DWORD OSLibDosFindFirst(LPCSTR lpFileName,WIN32_FIND_DATAA* lpFindFileData);
177DWORD OSLibDosFindFirstMulti(LPCSTR lpFileName,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
178BOOL OSLibDosFindNext(DWORD hFindFile,WIN32_FIND_DATAA* lpFindFileData);
179BOOL OSLibDosFindNextMulti(DWORD hFindFile,WIN32_FIND_DATAA *lpFindFileData,DWORD *count);
180BOOL OSLibDosFindClose(DWORD hFindFile);
181
182DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
183DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
184
185
186#ifdef OS2DEF_INCLUDED
187#ifndef FIL_STANDARDL
188 typedef struct _LONGLONG { /* LONGLONG */
189 ULONG ulLo;
190 LONG ulHi;
191 } LONGLONG;
192 typedef LONGLONG *PLONGLONG;
193
194 typedef struct _ULONGLONG { /* ULONGLONG */
195 ULONG ulLo;
196 ULONG ulHi;
197 } ULONGLONG;
198 typedef ULONGLONG *PULONGLONG;
199
200 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
201 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
202 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
203
204 typedef struct _FILESTATUS3L /* fsts3L */
205 {
206 FDATE fdateCreation;
207 FTIME ftimeCreation;
208 FDATE fdateLastAccess;
209 FTIME ftimeLastAccess;
210 FDATE fdateLastWrite;
211 FTIME ftimeLastWrite;
212 LONGLONG cbFile;
213 LONGLONG cbFileAlloc;
214 ULONG attrFile;
215 } FILESTATUS3L;
216 typedef FILESTATUS3L *PFILESTATUS3L;
217
218 /* Large File Support >2GB */
219 typedef struct _FILESTATUS4L /* fsts4L */
220 {
221 FDATE fdateCreation;
222 FTIME ftimeCreation;
223 FDATE fdateLastAccess;
224 FTIME ftimeLastAccess;
225 FDATE fdateLastWrite;
226 FTIME ftimeLastWrite;
227 LONGLONG cbFile;
228 LONGLONG cbFileAlloc;
229 ULONG attrFile;
230 ULONG cbList;
231 } FILESTATUS4L;
232 typedef FILESTATUS4L *PFILESTATUS4L;
233
234 typedef struct _FILELOCKL /* flock */
235 {
236 LONGLONG lOffset;
237 LONGLONG lRange;
238 } FILELOCKL;
239 typedef FILELOCKL *PFILELOCKL;
240#endif
241
242
243 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
244 APIRET OdinDosSetFileSize(HFILE hFile,
245 LONGLONG cbSize);
246
247 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
248 APIRET OdinDosSetFilePtr(HFILE hFile,
249 LONGLONG ib,
250 ULONG method,
251 PLONGLONG ibActual);
252
253 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
254 APIRET OdinDosSetFileLocks(HFILE hFile,
255 PFILELOCKL pflUnlock,
256 PFILELOCKL pflLock,
257 ULONG timeout,
258 ULONG flags);
259#endif
260
261#endif
Note: See TracBrowser for help on using the repository browser.