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

Last change on this file since 4285 was 4285, checked in by hugh, 25 years ago

Implemented Serial APIs

File size: 10.9 KB
Line 
1/* $Id: oslibdos.h,v 1.23 2000-09-20 21:32:55 hugh 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
205
206#ifdef OS2DEF_INCLUDED
207#ifndef FIL_STANDARDL
208 typedef struct _LONGLONG { /* LONGLONG */
209 ULONG ulLo;
210 LONG ulHi;
211 } LONGLONG;
212 typedef LONGLONG *PLONGLONG;
213
214 typedef struct _ULONGLONG { /* ULONGLONG */
215 ULONG ulLo;
216 ULONG ulHi;
217 } ULONGLONG;
218 typedef ULONGLONG *PULONGLONG;
219
220 #define FIL_STANDARDL 11 /* LFS - Info level 11, standard file info for large files*/
221 #define FIL_QUERYEASIZEL 12 /* LFS - Level 12, return Full EA size for large files */
222 #define FIL_QUERYEASFROMLISTL 13 /* LFS - Level 13, return requested EA's */
223
224 typedef struct _FILESTATUS3L /* fsts3L */
225 {
226 FDATE fdateCreation;
227 FTIME ftimeCreation;
228 FDATE fdateLastAccess;
229 FTIME ftimeLastAccess;
230 FDATE fdateLastWrite;
231 FTIME ftimeLastWrite;
232 LONGLONG cbFile;
233 LONGLONG cbFileAlloc;
234 ULONG attrFile;
235 } FILESTATUS3L;
236 typedef FILESTATUS3L *PFILESTATUS3L;
237
238 /* Large File Support >2GB */
239 typedef struct _FILESTATUS4L /* fsts4L */
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 ULONG cbList;
251 } FILESTATUS4L;
252 typedef FILESTATUS4L *PFILESTATUS4L;
253
254 typedef struct _FILELOCKL /* flock */
255 {
256 LONGLONG lOffset;
257 LONGLONG lRange;
258 } FILELOCKL;
259 typedef FILELOCKL *PFILELOCKL;
260#endif
261
262
263 typedef APIRET (* APIENTRY PROC_DosSetFileSizeL)(HFILE hFile, LONGLONG cbSize);
264 APIRET OdinDosSetFileSize(HFILE hFile,
265 LONGLONG cbSize);
266
267 typedef APIRET (* APIENTRY PROC_DosSetFilePtrL)(HFILE hFile, LONGLONG ib, ULONG method, PLONGLONG ibActual);
268 APIRET OdinDosSetFilePtr(HFILE hFile,
269 LONGLONG ib,
270 ULONG method,
271 PLONGLONG ibActual);
272
273 typedef APIRET (* APIENTRY PROC_DosSetFileLocksL)(HFILE hFile, PFILELOCKL pflUnlock, PFILELOCKL pflLock, ULONG timeout, ULONG flags);
274 APIRET OdinDosSetFileLocks(HFILE hFile,
275 PFILELOCKL pflUnlock,
276 PFILELOCKL pflLock,
277 ULONG timeout,
278 ULONG flags);
279#endif
280
281#endif
282
283ULONG OSLibDosQueryModuleName(ULONG hModule, int cchName, char *pszName);
284
285
Note: See TracBrowser for help on using the repository browser.