Skip to content

Latest commit

 

History

History
458 lines (406 loc) · 11 KB

doscalls.h

File metadata and controls

458 lines (406 loc) · 11 KB
 
1
2
3
4
5
6
7
8
9
#ifndef _INCL_DOSCALLS_H_
#define _INCL_DOSCALLS_H_
#include "os2types.h"
#ifdef __cplusplus
extern "C" {
#endif
Oct 17, 2016
Oct 17, 2016
10
11
12
#define CCHMAXPATH 260
#define CCHMAXPATHCOMP 256
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
enum
{
EXIT_THREAD,
EXIT_PROCESS
};
enum
{
QSV_MAX_PATH_LENGTH = 1,
QSV_MAX_TEXT_SESSIONS,
QSV_MAX_PM_SESSIONS,
QSV_MAX_VDM_SESSIONS,
QSV_BOOT_DRIVE,
QSV_DYN_PRI_VARIATION,
QSV_MAX_WAIT,
QSV_MIN_SLICE,
QSV_MAX_SLICE,
QSV_PAGE_SIZE,
QSV_VERSION_MAJOR,
QSV_VERSION_MINOR,
QSV_VERSION_REVISION,
QSV_MS_COUNT,
QSV_TIME_LOW,
QSV_TIME_HIGH,
QSV_TOTPHYSMEM,
QSV_TOTRESMEM,
QSV_TOTAVAILMEM,
QSV_MAXPRMEM,
QSV_MAXSHMEM,
QSV_TIMER_INTERVAL,
QSV_MAX_COMP_LENGTH,
QSV_FOREGROUND_FS_SESSION,
QSV_FOREGROUND_PROCESS
};
Oct 8, 2016
Oct 8, 2016
48
#pragma pack(push, 1)
49
50
typedef struct TIB2
{
Oct 8, 2016
Oct 8, 2016
51
52
53
54
55
56
ULONG tib2_ultid;
ULONG tib2_ulpri;
ULONG tib2_version;
USHORT tib2_usMCCount;
USHORT tib2_fMCForceFlag;
} TIB2, *PTIB2;
57
58
59
typedef struct TIB
{
Oct 8, 2016
Oct 8, 2016
60
61
62
63
64
65
PVOID tib_pexchain;
PVOID tib_pstack;
PVOID tib_pstacklimit;
PTIB2 tib_ptib2;
ULONG tib_version;
ULONG tib_ordinal;
66
} TIB, *PTIB;
Oct 14, 2016
Oct 14, 2016
67
#pragma pack(pop)
68
69
70
typedef struct PIB
{
Oct 8, 2016
Oct 8, 2016
71
72
ULONG pib_ulpid;
ULONG pib_ulppid;
73
HMODULE pib_hmte;
Oct 8, 2016
Oct 8, 2016
74
75
76
77
PCHAR pib_pchcmd;
PCHAR pib_pchenv;
ULONG pib_flstatus;
ULONG pib_ultype;
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
} PIB, *PPIB;
typedef VOID APIENTRY FNEXITLIST(ULONG);
typedef FNEXITLIST *PFNEXITLIST;
enum
{
TC_EXIT,
TC_HARDERROR,
TC_TRAP,
TC_KILLPROCESS,
TC_EXCEPTION
};
enum
{
EXLST_ADD = 1,
EXLST_REMOVE,
EXLST_EXIT
};
typedef void *PEXCEPTIONREGISTRATIONRECORD; // !!! FIXME
Oct 6, 2016
Oct 6, 2016
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
typedef struct
{
UCHAR hours;
UCHAR minutes;
UCHAR seconds;
UCHAR hundredths;
UCHAR day;
UCHAR month;
USHORT year;
SHORT timezone;
UCHAR weekday;
} DATETIME, *PDATETIME;
typedef void *PEAOP2; // !!! FIXME
enum
{
FILE_EXISTED = 1,
FILE_CREATED,
FILE_TRUNCATED
};
enum
{
FILE_OPEN = 0x01,
FILE_TRUNCATE = 0x02,
FILE_CREATE = 0x10
};
enum
{
FILE_NORMAL = 0x00,
FILE_READONLY = 0x01,
FILE_HIDDEN = 0x02,
FILE_SYSTEM = 0x04,
FILE_DIRECTORY = 0x10,
FILE_ARCHIVED = 0x20
};
enum
{
OPEN_ACTION_FAIL_IF_EXISTS = 0x0000,
OPEN_ACTION_OPEN_IF_EXISTS = 0x0001,
OPEN_ACTION_REPLACE_IF_EXISTS = 0x0002,
OPEN_ACTION_FAIL_IF_NEW = 0x0000,
OPEN_ACTION_CREATE_IF_NEW = 0x0010,
};
enum
{
OPEN_ACCESS_READONLY = 0x0000,
OPEN_ACCESS_WRITEONLY = 0x0001,
OPEN_ACCESS_READWRITE = 0x0002,
OPEN_SHARE_DENYREADWRITE = 0x0010,
OPEN_SHARE_DENYWRITE = 0x0020,
OPEN_SHARE_DENYREAD = 0x0030,
OPEN_SHARE_DENYNONE = 0x0040,
OPEN_FLAGS_NOINHERIT = 0x0080,
OPEN_FLAGS_NO_LOCALITY = 0x0000,
OPEN_FLAGS_SEQUENTIAL = 0x0100,
OPEN_FLAGS_RANDOM = 0x0200,
OPEN_FLAGS_RANDOMSEQUENTIAL = 0x0300,
OPEN_FLAGS_NO_CACHE = 0x1000,
OPEN_FLAGS_FAIL_ON_ERROR = 0x2000,
OPEN_FLAGS_WRITE_THROUGH = 0x4000,
OPEN_FLAGS_DASD = 0x8000,
OPEN_FLAGS_NONSPOOLED = 0x00040000,
OPEN_FLAGS_PROTECTED_HANDLE = 0x40000000
};
Oct 9, 2016
Oct 9, 2016
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
enum
{
FILE_BEGIN,
FILE_CURRENT,
FILE_END
};
enum
{
FIL_STANDARD = 1,
FIL_QUERYEASIZE = 2,
FIL_QUERYEASFROMLIST = 3,
FIL_QUERYFULLNAME = 5
};
Oct 17, 2016
Oct 17, 2016
187
#pragma pack(push, 1)
Oct 9, 2016
Oct 9, 2016
188
189
190
191
192
193
194
195
196
197
198
199
200
typedef struct
{
USHORT day : 5;
USHORT month : 4;
USHORT year : 7;
} FDATE, *PFDATE;
typedef struct
{
USHORT twosecs : 5;
USHORT minutes : 6;
USHORT hours : 5;
} FTIME, *PFTIME;
Oct 17, 2016
Oct 17, 2016
201
#pragma pack(pop)
Oct 9, 2016
Oct 9, 2016
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
typedef struct
{
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
} FILESTATUS3, *PFILESTATUS3;
typedef struct
{
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
ULONG cbList;
} FILESTATUS4, *PFILESTATUS4;
Oct 6, 2016
Oct 6, 2016
229
Oct 14, 2016
Oct 14, 2016
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
enum
{
CREATE_READY,
CREATE_SUSPENDED
};
enum
{
STACK_SPARSE = 0,
STACK_COMMITTED = 2
};
typedef VOID APIENTRY FNTHREAD(ULONG);
typedef FNTHREAD *PFNTHREAD;
typedef struct
{
ULONG codeTerminate;
ULONG codeResult;
} RESULTCODES, *PRESULTCODES;
enum
{
EXEC_SYNC,
EXEC_ASYNC,
EXEC_ASYNCRESULT,
EXEC_TRACE,
EXEC_BACKGROUND,
EXEC_LOAD,
EXEC_ASYNCRESULTDB
};
enum
{
DC_SEM_SHARED = 1
};
enum
{
DCMW_WAIT_ANY = (1<<1),
DCMW_WAIT_ALL = (1<<2)
};
enum
{
SEM_INDEFINITE_WAIT = -1,
SEM_IMMEDIATE_RETURN = 0
};
enum
{
DCWW_WAIT,
DCWW_NOWAIT
};
enum
{
DCWA_PROCESS,
DCWA_PROCESSTREE
};
enum
{
DSPI_WRTTHRU = 0x10,
};
Oct 17, 2016
Oct 17, 2016
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
enum
{
HDIR_CREATE = -1,
HDIR_SYSTEM = 1
};
enum
{
MUST_HAVE_READONLY = ( (FILE_READONLY << 8) | FILE_READONLY ),
MUST_HAVE_HIDDEN = ( (FILE_HIDDEN << 8) | FILE_HIDDEN ),
MUST_HAVE_SYSTEM = ( (FILE_SYSTEM << 8) | FILE_SYSTEM),
MUST_HAVE_DIRECTORY = ( (FILE_DIRECTORY << 8) | FILE_DIRECTORY ),
MUST_HAVE_ARCHIVED = ( (FILE_ARCHIVED << 8) | FILE_ARCHIVED )
};
typedef struct
{
ULONG oNextEntryOffset;
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
UCHAR cchName;
CHAR achName[CCHMAXPATHCOMP];
} FILEFINDBUF3, *PFILEFINDBUF3;
typedef struct
{
ULONG oNextEntryOffset;
FDATE fdateCreation;
FTIME ftimeCreation;
FDATE fdateLastAccess;
FTIME ftimeLastAccess;
FDATE fdateLastWrite;
FTIME ftimeLastWrite;
ULONG cbFile;
ULONG cbFileAlloc;
ULONG attrFile;
ULONG cbList;
UCHAR cchName;
CHAR achName[CCHMAXPATHCOMP];
} FILEFINDBUF4, *PFILEFINDBUF4;
enum
{
DEVINFO_PRINTER,
DEVINFO_RS232,
DEVINFO_FLOPPY,
DEVINFO_COPROCESSOR,
DEVINFO_SUBMODEL,
DEVINFO_MODEL,
DEVINFO_ADAPTER
};
Oct 17, 2016
Oct 17, 2016
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
enum
{
FAPPTYP_NOTSPEC = 0x0000,
FAPPTYP_NOTWINDOWCOMPAT = 0x0001,
FAPPTYP_WINDOWCOMPAT = 0x0002,
FAPPTYP_WINDOWAPI = 0x0003,
FAPPTYP_BOUND = 0x0008,
FAPPTYP_DLL = 0x0010,
FAPPTYP_DOS = 0x0020,
FAPPTYP_PHYSDRV = 0x0040,
FAPPTYP_VIRTDRV = 0x0080,
FAPPTYP_PROTDLL = 0x0100,
FAPPTYP_WINDOWSREAL = 0x0200,
FAPPTYP_WINDOWSPROT = 0x0400,
FAPPTYP_WINDOWSPROT31 =0x1000,
FAPPTYP_32BIT = 0x4000
};
Oct 27, 2016
Oct 27, 2016
374
375
376
377
378
379
380
enum
{
BEGIN_LIBPATH = 1,
END_LIBPATH = 2
};
typedef void *PCONTEXTRECORD; // !!! FIXME
Oct 14, 2016
Oct 14, 2016
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
// !!! FIXME: these should probably get sorted alphabetically and/or grouped
// !!! FIXME: into areas of functionality, but for now, I'm just listing them
// !!! FIXME: in the order I implemented them to get things running.
APIRET OS2API DosGetInfoBlocks(PTIB *pptib, PPIB *pppib);
APIRET OS2API DosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
APIRET OS2API DosQueryModuleName(HMODULE hmod, ULONG cbName, PCHAR pch);
APIRET OS2API DosScanEnv(PSZ pszName, PSZ *ppszValue);
APIRET OS2API DosWrite(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual);
VOID OS2API DosExit(ULONG action, ULONG result);
APIRET OS2API DosExitList(ULONG ordercode, PFNEXITLIST pfn);
APIRET OS2API DosCreateEventSem(PSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
APIRET OS2API DosCreateMutexSem(PSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 fState);
APIRET OS2API DosSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
Oct 27, 2016
Oct 27, 2016
396
ULONG OS2API DosFlatToSel(VOID);
397
APIRET OS2API DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes);
Oct 2, 2016
Oct 2, 2016
398
399
400
401
402
403
APIRET OS2API DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
APIRET OS2API DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag);
APIRET OS2API DosSubSetMem(PVOID pbBase, ULONG flag, ULONG cb);
APIRET OS2API DosSubAllocMem(PVOID pbBase, PPVOID ppb, ULONG cb);
APIRET OS2API DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr);
APIRET OS2API DosSetMem(PVOID pb, ULONG cb, ULONG flag);
Oct 6, 2016
Oct 6, 2016
404
405
APIRET OS2API DosGetDateTime(PDATETIME pdt);
APIRET OS2API DosOpen(PSZ pszFileName, PHFILE pHf, PULONG pulAction, ULONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2);
Oct 9, 2016
Oct 9, 2016
406
407
408
409
410
411
412
413
414
APIRET OS2API DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
APIRET OS2API DosReleaseMutexSem(HMTX hmtx);
APIRET OS2API DosSetFilePtr(HFILE hFile, LONG ib, ULONG method, PULONG ibActual);
APIRET OS2API DosRead(HFILE hFile, PVOID pBuffer, ULONG cbRead, PULONG pcbActual);
APIRET OS2API DosClose(HFILE hFile);
APIRET OS2API DosEnterMustComplete(PULONG pulNesting);
APIRET OS2API DosExitMustComplete(PULONG pulNesting);
APIRET OS2API DosQueryPathInfo(PSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf);
APIRET OS2API DosQueryFileInfo(HFILE hf, ULONG ulInfoLevel, PVOID pInfo, ULONG cbInfoBuf);
Oct 14, 2016
Oct 14, 2016
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
APIRET OS2API DosCreateThread(PTID ptid, PFNTHREAD pfn, ULONG param, ULONG flag, ULONG cbStack);
APIRET OS2API DosExecPgm(PCHAR pObjname, LONG cbObjname, ULONG execFlag, PSZ pArg, PSZ pEnv, PRESULTCODES pRes, PSZ pName);
APIRET OS2API DosResetEventSem(HEV hev, PULONG pulPostCt);
APIRET OS2API DosPostEventSem(HEV hev);
APIRET OS2API DosCloseEventSem(HEV hev);
APIRET OS2API DosWaitEventSem(HEV hev, ULONG ulTimeout);
APIRET OS2API DosQueryEventSem(HEV hev, PULONG pulPostCt);
APIRET OS2API DosFreeMem(PVOID pb);
APIRET OS2API DosWaitChild(ULONG action, ULONG option, PRESULTCODES pres, PPID ppid, PID pid);
APIRET OS2API DosWaitThread(PTID ptid, ULONG option);
APIRET OS2API DosSleep(ULONG msec);
APIRET OS2API DosSubFreeMem(PVOID pbBase, PVOID pb, ULONG cb);
APIRET OS2API DosDelete(PSZ pszFile);
APIRET OS2API DosQueryCurrentDir(ULONG disknum, PBYTE pBuf, PULONG pcbBuf);
APIRET OS2API DosSetPathInfo(PSZ pszPathName, ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf, ULONG flOptions);
Oct 16, 2016
Oct 16, 2016
430
431
432
433
APIRET OS2API DosQueryModuleHandle(PSZ pszModname, PHMODULE phmod);
APIRET OS2API DosQueryProcAddr(HMODULE hmod, ULONG ordinal, PSZ pszName, PFN* ppfn);
APIRET OS2API DosQueryCp(ULONG cb, PULONG arCP, PULONG pcCP);
APIRET OS2API DosOpenL(PSZ pszFileName, PHFILE pHf, PULONG pulAction, LONGLONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2);
Oct 17, 2016
Oct 17, 2016
434
435
436
437
438
APIRET OS2API DosFindFirst(PSZ pszFileSpec, PHDIR phdir, ULONG flAttribute, PVOID pfindbuf, ULONG cbBuf, PULONG pcFileNames, ULONG ulInfoLevel);
APIRET OS2API DosFindNext(HDIR hDir, PVOID pfindbuf, ULONG cbfindbuf, PULONG pcFilenames);
APIRET OS2API DosFindClose(HDIR hDir);
APIRET OS2API DosQueryCurrentDisk(PULONG pdisknum, PULONG plogical);
APIRET OS2API DosDevConfig(PVOID pdevinfo, ULONG item);
Oct 17, 2016
Oct 17, 2016
439
440
APIRET OS2API DosLoadModule(PSZ pszName, ULONG cbName, PSZ pszModname, PHMODULE phmod);
APIRET OS2API DosResetBuffer(HFILE hFile);
Oct 17, 2016
Oct 17, 2016
441
APIRET OS2API DosQueryAppType(PSZ pszName, PULONG pFlags);
Oct 19, 2016
Oct 19, 2016
442
443
APIRET OS2API DosAllocThreadLocalMemory(ULONG cb, PULONG *p);
APIRET OS2API DosFreeThreadLocalMemory(ULONG *p);
Oct 27, 2016
Oct 27, 2016
444
445
446
447
APIRET OS2API DosQueryFHState(HFILE hFile, PULONG pMode);
APIRET OS2API DosQueryExtLIBPATH(PSZ pszExtLIBPATH, ULONG flags);
APIRET OS2API DosSetMaxFH(ULONG cFH);
APIRET OS2API DosQueryThreadContext(TID tid, ULONG level, PCONTEXTRECORD pcxt);
Oct 29, 2016
Oct 29, 2016
448
ULONG OS2API DosSelToFlat(VOID);
Sep 15, 2017
Sep 15, 2017
449
APIRET OS2API DosCloseMutexSem(HMTX hmtx);
450
451
452
453
454
455
456
457
#ifdef __cplusplus
}
#endif
#endif
// end of doscalls.h ...