|
|
1.1 root 1: /***************************************************************************\
2: *
3: * Module Name: OS2DOS.H
4: *
5: * OS/2 Base Include File
6: *
7: * Copyright (c) 1987 Microsoft Corporation
8: * Copyright (c) 1987 IBM Corporation
9: *
10: *****************************************************************************
11: *
12: * Subcomponents marked with "+" are partially included by default
13: *
14: * #define: To include:
15: *
16: * + INCL_DOSPROCESS Process and thread support
17: * INCL_DOSINFOSEG InfoSeg support
18: * + INCL_DOSFILEMGR File Management
19: * + INCL_DOSMEMMGR Memory Management
20: * + INCL_DOSSEMAPHORES Semaphore support
21: * + INCL_DOSDATETIME Date/Time and Timer support
22: * INCL_DOSMODULEMGR Module manager
23: * + INCL_DOSRESOURCES Resource support
24: * INCL_DOSNLS National Language Support
25: * INCL_DOSSIGNALS Signals
26: * INCL_DOSMONITORS Monitors
27: * INCL_DOSQUEUES Queues
28: * INCL_DOSSESMGR Session Manager Support
29: * INCL_DOSDEVICES Device specific, ring 2 support
30: * INCL_DOSPROFILE DosProfile API
31: *
32: \***************************************************************************/
33:
34: #define INCL_DOSINCLUDED
35:
36: #ifdef INCL_DOS
37:
38: #define INCL_DOSPROCESS
39: #define INCL_DOSINFOSEG
40: #define INCL_DOSFILEMGR
41: #define INCL_DOSMEMMGR
42: #define INCL_DOSSEMAPHORES
43: #define INCL_DOSDATETIME
44: #define INCL_DOSMODULEMGR
45: #define INCL_DOSRESOURCES
46: #define INCL_DOSNLS
47: #define INCL_DOSSIGNALS
48: #define INCL_DOSMONITORS
49: #define INCL_DOSQUEUES
50: #define INCL_DOSSESMGR
51: #define INCL_DOSDEVICES
52: #define INCL_DOSPROFILE
53:
54: #endif /* INCL_DOS */
55:
56: #ifdef INCL_ERRORS
57: #define INCL_DOSERRORS
58: #endif /* INCL_ERRORS */
59:
60: #if (defined(INCL_DOSPROCESS) | !defined(INCL_NOCOMMON))
61:
62: /*** General services */
63:
64: USHORT APIENTRY DosBeep(USHORT, USHORT);
65:
66: /*** Process and Thread support */
67:
68: VOID APIENTRY DosExit(USHORT, USHORT);
69:
70: /* DosExit codes */
71:
72: #define EXIT_THREAD 0
73: #define EXIT_PROCESS 1
74:
75: #endif /* common INCL_DOSPROCESS stuff */
76:
77: #ifdef INCL_DOSPROCESS
78:
79: typedef struct _PIDINFO { /* pidi */
80: PID pid;
81: TID tid;
82: PID pidParent;
83: } PIDINFO;
84: typedef PIDINFO FAR *PPIDINFO;
85:
86: typedef VOID (PASCAL FAR *PFNTHREAD)(VOID);
87:
88: USHORT APIENTRY DosCreateThread(PFNTHREAD, PTID, PBYTE);
89: USHORT APIENTRY DosResumeThread(TID);
90: USHORT APIENTRY DosSuspendThread(TID);
91:
92: /* Action code values */
93:
94: #define DCWA_PROCESS 0
95: #define DCWA_PROCESSTREE 1
96:
97: /* Wait option values */
98:
99: #define DCWW_WAIT 0
100: #define DCWW_NOWAIT 1
101:
102: typedef struct _RESULTCODES { /* resc */
103: USHORT codeTerminate;
104: USHORT codeResult;
105: } RESULTCODES;
106: typedef RESULTCODES FAR *PRESULTCODES;
107:
108: USHORT APIENTRY DosCwait(USHORT, USHORT, PRESULTCODES, PPID, PID);
109: USHORT APIENTRY DosSleep(ULONG);
110:
111: /* codeTerminate values (also passed to ExitList routines) */
112:
113: #define TC_EXIT 0
114: #define TC_HARDERROR 1
115: #define TC_TRAP 2
116: #define TC_KILLPROCESS 3
117:
118: typedef VOID (PASCAL FAR *PFNEXITLIST)(USHORT);
119:
120: VOID APIENTRY DosEnterCritSec(VOID);
121: VOID APIENTRY DosExitCritSec(VOID);
122: USHORT APIENTRY DosExitList(USHORT, PFNEXITLIST);
123:
124: /* DosExitList functions */
125:
126: #define EXLST_ADD 1
127: #define EXLST_REMOVE 2
128: #define EXLST_EXIT 3
129:
130: USHORT APIENTRY DosExecPgm(PCHAR, SHORT, USHORT, PSZ, PSZ, PRESULTCODES, PSZ);
131:
132: /* DosExecPgm functions */
133:
134: #define EXEC_SYNC 0
135: #define EXEC_ASYNC 1
136: #define EXEC_ASYNCRESULT 2
137: #define EXEC_TRACE 3
138: #define EXEC_BACKGROUND 4
139: #define EXEC_LOAD 5
140:
141: USHORT APIENTRY DosGetPid(PPIDINFO);
142: USHORT APIENTRY DosGetPPid(USHORT, PUSHORT);
143:
144: USHORT APIENTRY DosGetPrty(USHORT, PUSHORT, USHORT);
145: USHORT APIENTRY DosSetPrty(USHORT, USHORT, SHORT, USHORT);
146:
147: /* Priority scopes */
148:
149: #define PRTYS_PROCESS 0
150: #define PRTYS_PROCESSTREE 1
151: #define PRTYS_THREAD 2
152:
153: /* Priority classes */
154:
155: #define PRTYC_NOCHANGE 0
156: #define PRTYC_IDLETIME 1
157: #define PRTYC_REGULAR 2
158: #define PRTYC_TIMECRITICAL 3
159:
160: USHORT APIENTRY DosKillProcess(USHORT, PID);
161:
162: #define DKP_PROCESS 0
163: #define DKP_PROCESSTREE 1
164:
165: #endif /* INCL_DOSPROCESS */
166:
167:
168: /*** InfoSeg support */
169:
170: #ifdef INCL_DOSINFOSEG
171:
172: /* Global Info Seg */
173:
174: typedef struct _GINFOSEG { /* gis */
175: ULONG time;
176: ULONG msecs;
177: UCHAR hour;
178: UCHAR minutes;
179: UCHAR seconds;
180: UCHAR hundredths;
181: USHORT timezone;
182: USHORT cusecTimerInterval;
183: UCHAR day;
184: UCHAR month;
185: USHORT year;
186: UCHAR weekday;
187: UCHAR uchMajorVersion;
188: UCHAR uchMinorVersion;
189: UCHAR chRevisionLetter;
190: UCHAR sgCurrent;
191: UCHAR sgMax;
192: UCHAR cHugeShift;
193: UCHAR fProtectModeOnly;
194: USHORT pidForeground;
195: UCHAR fDynamicSched;
196: UCHAR csecMaxWait;
197: USHORT cmsecMinSlice;
198: USHORT cmsecMaxSlice;
199: USHORT bootdrive;
200: UCHAR amecRAS[32];
201: UCHAR csgWindowableVioMax;
202: UCHAR csgPMMax;
203: } GINFOSEG;
204: typedef GINFOSEG FAR *PGINFOSEG;
205:
206: /* Local Info Seg */
207:
208: typedef struct _LINFOSEG { /* lis */
209: PID pidCurrent;
210: PID pidParent;
211: USHORT prtyCurrent;
212: TID tidCurrent;
213: USHORT sgCurrent;
214: UCHAR rfProcStatus;
215: UCHAR dummy1;
216: BOOL fForeground;
217: UCHAR typeProcess;
218: UCHAR dummy2;
219: SEL selEnvironment;
220: USHORT offCmdLine;
221: USHORT cbDataSegment;
222: USHORT cbStack;
223: USHORT cbHeap;
224: HMODULE hmod;
225: SEL selDS;
226: } LINFOSEG;
227: typedef LINFOSEG FAR *PLINFOSEG;
228:
229: /* Process Type codes (local info seg typeProcess field) */
230:
231: #define PT_FULLSCREEN 0 /* Full screen app. */
232: #define PT_REALMODE 1 /* Real mode process */
233: #define PT_WINDOWABLEVIO 2 /* VIO windowable app. */
234: #define PT_PM 3 /* Presentation Manager app. */
235: #define PT_DETACHED 4 /* Detached app. */
236:
237: /* Process Status Flag definitions (local info seg rfProcStatus field) */
238:
239: #define PS_EXITLIST 1 /* Thread is in exitlist routine */
240:
241:
242: USHORT APIENTRY DosGetInfoSeg(PSEL, PSEL);
243:
244: /* Helper macros used to convert selector to PINFOSEG or LINFOSEG */
245:
246: #define MAKEPGINFOSEG(sel) ((PGINFOSEG)MAKEP(sel, 0))
247: #define MAKEPLINFOSEG(sel) ((PLINFOSEG)MAKEP(sel, 0))
248:
249: #endif /* INCL_DOSINFOSEG */
250:
251: #if (defined(INCL_DOSFILEMGR) | !defined(INCL_NOCOMMON))
252:
253: /*** File manager */
254:
255: typedef SHANDLE HFILE; /* hf */
256: typedef HFILE FAR *PHFILE;
257:
258: USHORT APIENTRY DosOpen(PSZ, PHFILE, PUSHORT, ULONG, USHORT, USHORT, USHORT, ULONG);
259: USHORT APIENTRY DosClose(HFILE);
260: USHORT APIENTRY DosRead(HFILE, PVOID, USHORT, PUSHORT);
261: USHORT APIENTRY DosWrite(HFILE, PVOID, USHORT, PUSHORT);
262:
263: /* File time and date types */
264:
265: typedef struct _FILESTATUS { /* fsts */
266: FDATE fdateCreation;
267: FTIME ftimeCreation;
268: FDATE fdateLastAccess;
269: FTIME ftimeLastAccess;
270: FDATE fdateLastWrite;
271: FTIME ftimeLastWrite;
272: ULONG cbFile;
273: ULONG cbFileAlloc;
274: USHORT attrFile;
275: } FILESTATUS;
276: typedef FILESTATUS FAR *PFILESTATUS;
277:
278: typedef struct _FSALLOCATE { /* fsalloc */
279: ULONG idFileSystem;
280: ULONG cSectorUnit;
281: ULONG cUnit;
282: ULONG cUnitAvail;
283: USHORT cbSector;
284: } FSALLOCATE;
285: typedef FSALLOCATE FAR *PFSALLOCATE;
286:
287: typedef SHANDLE HDIR; /* hdir */
288: typedef HDIR FAR *PHDIR;
289:
290: USHORT APIENTRY DosDelete(PSZ, ULONG);
291: USHORT APIENTRY DosDupHandle(HFILE, PHFILE);
292:
293: USHORT APIENTRY DosQFHandState(HFILE, PUSHORT);
294: USHORT APIENTRY DosSetFHandState(HFILE, USHORT);
295: USHORT APIENTRY DosQHandType(HFILE, PUSHORT, PUSHORT);
296:
297: USHORT APIENTRY DosReadAsync (HFILE, PULONG, PUSHORT, PVOID, USHORT, PUSHORT);
298: USHORT APIENTRY DosWriteAsync(HFILE, PULONG, PUSHORT, PVOID, USHORT, PUSHORT);
299:
300: USHORT APIENTRY DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
301: USHORT APIENTRY DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
302: USHORT APIENTRY DosFindClose(HDIR);
303:
304: USHORT APIENTRY DosNewSize(HFILE, ULONG);
305: USHORT APIENTRY DosBufReset(HFILE);
306:
307: USHORT APIENTRY DosChgFilePtr(HFILE, LONG, USHORT, PULONG);
308:
309: USHORT APIENTRY DosFileLocks(HFILE, PLONG, PLONG);
310:
311: USHORT APIENTRY DosMove(PSZ, PSZ, ULONG);
312: USHORT APIENTRY DosMkDir(PSZ, ULONG);
313: USHORT APIENTRY DosRmDir(PSZ, ULONG);
314: USHORT APIENTRY DosSelectDisk(USHORT);
315: USHORT APIENTRY DosQCurDisk(PUSHORT, PULONG);
316:
317: USHORT APIENTRY DosChDir(PSZ, ULONG);
318: USHORT APIENTRY DosQCurDir(USHORT, PBYTE, PUSHORT);
319:
320: USHORT APIENTRY DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
321: USHORT APIENTRY DosSetFSInfo(USHORT, USHORT, PBYTE, USHORT);
322: USHORT APIENTRY DosQVerify(PUSHORT);
323: USHORT APIENTRY DosSetVerify(USHORT);
324: USHORT APIENTRY DosSetMaxFH(USHORT);
325:
326: USHORT APIENTRY DosQFileInfo(HFILE, USHORT, PBYTE, USHORT);
327: USHORT APIENTRY DosSetFileInfo(HFILE, USHORT, PBYTE, USHORT);
328:
329: USHORT APIENTRY DosQFileMode(PSZ, PUSHORT, ULONG);
330: USHORT APIENTRY DosSetFileMode(PSZ, USHORT, ULONG);
331:
332: /*
333: *
334: * Consistent names for file functions
335: *
336: * DosQueryFileState DosQFHandState
337: * DosSetFileState DosSetFHandState
338: * DosQueryHandleType DosQHandType
339: * DosResetBuffer DosBufReset
340: * DosSetFilePtr DosChgFilePtr
341: * DosMoveFile DosMove
342: * DosMakeDirectory DosMkdir
343: * DosRemoveDirectory DosRmdir
344: * DosSetCurrentDisk DosSelectDisk
345: * DosQueryCurrentDisk DosQCurDisk
346: * DosSetCurrentDirectory DosChdir
347: * DosQueryCurrentDirectory DosQCurDir
348: * DosQueryFileSystemInfo DosQFSInfo
349: * DosSetFileSystemInfo DosSetFSInfo
350: * DosQueryWriteVerify DosQVerify
351: * DosQueryFileMode DosQFileMode
352: * DosSetWriteVerify DosSetVerify
353: * DosSetMaxFileHandles DosSetMaxFH
354: * DosQueryFileInfo DosQFileInfo
355: *
356: */
357:
358: #endif /* common INCL_DOSFILEMAN */
359:
360: #if (defined(INCL_DOSMEMMGR) | !defined(INCL_NOCOMMON))
361: /*** Memory management */
362:
363: USHORT APIENTRY DosAllocSeg(USHORT, PSEL, USHORT);
364: USHORT APIENTRY DosReallocSeg(USHORT, SEL);
365: USHORT APIENTRY DosFreeSeg(SEL);
366: USHORT APIENTRY DosGiveSeg(SEL, PID, PSEL);
367: USHORT APIENTRY DosGetSeg(SEL);
368: USHORT APIENTRY DosSizeSeg(SEL, PULONG);
369:
370: /* Segment attribute flags (used with DosAllocSeg) */
371:
372: #define SEG_GIVEABLE 0x0001
373: #define SEG_GETTABLE 0x0002
374: #define SEG_DISCARDABLE 0x0004
375:
376: #endif /* common INCL_DOSMEMMGR */
377:
378: #ifdef INCL_DOSMEMMGR
379:
380: USHORT APIENTRY DosAllocHuge(USHORT, USHORT, PSEL, USHORT, USHORT);
381: USHORT APIENTRY DosReallocHuge(USHORT, USHORT, SEL);
382: USHORT APIENTRY DosGetHugeShift(PUSHORT);
383:
384: USHORT APIENTRY DosAllocShrSeg(USHORT, PSZ, PSEL);
385:
386: USHORT APIENTRY DosLockSeg(SEL);
387: USHORT APIENTRY DosUnlockSeg(SEL);
388:
389: USHORT APIENTRY DosGetShrSeg(PSZ, PSEL);
390:
391: USHORT APIENTRY DosMemAvail(PULONG);
392: USHORT APIENTRY DosCreateCSAlias(SEL, PSEL);
393:
394: USHORT APIENTRY DosSubAlloc(SEL, PUSHORT, USHORT);
395: USHORT APIENTRY DosSubFree(SEL, USHORT, USHORT);
396: USHORT APIENTRY DosSubSet(SEL, USHORT, USHORT);
397:
398: #endif /* INCL_DOSMEMMGR */
399:
400: #if (defined(INCL_DOSSEMAPHORES) | !defined(INCL_NOCOMMON))
401:
402: /*** Semaphore support */
403:
404: USHORT APIENTRY DosSemClear(HSEM);
405: USHORT APIENTRY DosSemSet(HSEM);
406: USHORT APIENTRY DosSemWait(HSEM, LONG);
407: USHORT APIENTRY DosSemSetWait(HSEM, LONG);
408: USHORT APIENTRY DosSemRequest(HSEM, LONG);
409:
410: #endif /* common INCL_DOSSEMAPHORES */
411:
412: #ifdef INCL_DOSSEMAPHORES
413:
414: typedef LHANDLE HSYSSEM; /* hssm */
415: typedef HSYSSEM FAR *PHSYSSEM;
416:
417: USHORT APIENTRY DosCreateSem(USHORT, PHSYSSEM, PSZ);
418:
419: #define CSEM_PRIVATE 0
420: #define CSEM_PUBLIC 1
421:
422: USHORT APIENTRY DosOpenSem(PHSEM, PSZ);
423: USHORT APIENTRY DosCloseSem(HSEM);
424:
425: typedef struct _MUXSEM { /* mxs */
426: USHORT zero;
427: HSEM hsem;
428: } MUXSEM;
429: typedef MUXSEM FAR *PMUXSEM;
430:
431: typedef struct _MUXSEMLIST { /* mxsl */
432: USHORT cmxs;
433: MUXSEM amxs[16];
434: } MUXSEMLIST;
435: typedef MUXSEMLIST FAR *PMUXSEMLIST;
436:
437: /*
438: * Since a MUXSEMLIST structure is actually a variable length
439: * structure, the following macro may be used to define a MUXSEMLIST
440: * structure having size elements, named "name".
441: */
442: #define DEFINEMUXSEMLIST(name, size) \
443: struct { \
444: USHORT cmxs; \
445: MUXSEM amxs[size]; \
446: } name;
447:
448: /*
449: * This function actually takes a far pointer to a MUXSEMLIST structure
450: * as its second parameter, but in order to allow its use with the
451: * DEFINEMUXSEMLIST macro, it is declared here as PVOID.
452: */
453: USHORT APIENTRY DosMuxSemWait(PUSHORT, PVOID, LONG);
454:
455:
456: /*** Fast safe ram semaphores */
457:
458: typedef struct _DOSFSRSEM { /* dosfsrs */
459: USHORT cb;
460: PID pid;
461: TID tid;
462: USHORT cUsage;
463: USHORT client;
464: ULONG sem;
465: } DOSFSRSEM;
466: typedef DOSFSRSEM FAR *PDOSFSRSEM;
467:
468: USHORT APIENTRY DosFSRamSemRequest(PDOSFSRSEM, LONG);
469: USHORT APIENTRY DosFSRamSemClear(PDOSFSRSEM);
470:
471: #endif /* INCL_DOSSEMAPHORES */
472:
473: #if (defined(INCL_DOSDATETIME) | !defined(INCL_NOCOMMON))
474:
475: /*** Time support */
476:
477: typedef struct _DATETIME { /* date */
478: UCHAR hours;
479: UCHAR minutes;
480: UCHAR seconds;
481: UCHAR hundredths;
482: UCHAR day;
483: UCHAR month;
484: USHORT year;
485: SHORT timezone;
486: UCHAR weekday;
487: } DATETIME;
488: typedef DATETIME FAR *PDATETIME;
489:
490: USHORT APIENTRY DosGetDateTime(PDATETIME);
491: USHORT APIENTRY DosSetDateTime(PDATETIME);
492:
493: #endif /* common INCL_DOSDATETIME */
494:
495: #ifdef INCL_DOSDATETIME
496:
497: typedef SHANDLE HTIMER;
498: typedef HTIMER FAR *PHTIMER;
499:
500: USHORT APIENTRY DosGetTimerInt(PUSHORT);
501:
502: USHORT APIENTRY DosTimerAsync(ULONG, HSEM, PHTIMER);
503: USHORT APIENTRY DosTimerStart(ULONG, HSEM, PHTIMER);
504: USHORT APIENTRY DosTimerStop(HTIMER);
505:
506: #endif /* INCL_DOSDATETIME */
507:
508:
509: /*** Module manager */
510:
511: #ifdef INCL_DOSMODULEMGR
512:
513: USHORT APIENTRY DosLoadModule(PSZ, USHORT, PSZ, PHMODULE);
514: USHORT APIENTRY DosFreeModule(HMODULE);
515: USHORT APIENTRY DosGetProcAddr(HMODULE, PSZ, PFN FAR *);
516: USHORT APIENTRY DosGetModHandle(PSZ, PHMODULE);
517: USHORT APIENTRY DosGetModName(HMODULE, USHORT, PCHAR);
518:
519: #endif /* INCL_DOSMODULEMGR */
520:
521: #if (defined(INCL_DOSRESOURCES) | !defined(INCL_NOCOMMON))
522:
523: /*** Resource support */
524:
525: /* Predefined resource types */
526:
527: #define RT_POINTER 1 /* mouse pointer shape */
528: #define RT_BITMAP 2 /* bitmap */
529: #define RT_MENU 3 /* menu template */
530: #define RT_DIALOG 4 /* dialog template */
531: #define RT_STRING 5 /* string tables */
532: #define RT_FONTDIR 6 /* font directory */
533: #define RT_FONT 7 /* font */
534: #define RT_ACCELTABLE 8 /* accelerator tables */
535: #define RT_RCDATA 9 /* binary data */
536: #define RT_MESSAGE 10 /* error msg tables */
537: #define RT_DLGINCLUDE 11 /* dialog include file name */
538: #define RT_VKEYTBL 12 /* key to vkey tables */
539: #define RT_KEYTBL 13 /* key to UGL tables */
540: #define RT_CHARTBL 14 /* glyph to character tables */
541:
542: #endif /* common INCL_DOSRESOURCES */
543:
544: #ifdef INCL_DOSRESOURCES
545:
546: USHORT APIENTRY DosGetResource(HMODULE, USHORT, USHORT, PSEL);
547:
548: #endif /* INCL_DOSRESOURCES */
549:
550:
551: /*** NLS Support */
552:
553: #ifdef INCL_DOSNLS
554:
555: typedef struct _COUNTRYCODE { /* ctryc */
556: USHORT country;
557: USHORT codepage;
558: } COUNTRYCODE;
559: typedef COUNTRYCODE FAR *PCOUNTRYCODE;
560:
561: typedef struct _COUNTRYINFO { /* ctryi */
562: USHORT country;
563: USHORT codepage;
564: USHORT fsDateFmt;
565: CHAR szCurrency[5];
566: CHAR szThousandsSeparator[2];
567: CHAR szDecimal[2];
568: CHAR szDateSeparator[2];
569: CHAR szTimeSeparator[2];
570: UCHAR fsCurrencyFmt;
571: UCHAR cDecimalPlace;
572: UCHAR fsTimeFmt;
573: USHORT abReserved1[2];
574: CHAR szDataSeparator[2];
575: USHORT abReserved2[5];
576: } COUNTRYINFO;
577: typedef COUNTRYINFO FAR *PCOUNTRYINFO;
578:
579: USHORT APIENTRY DosGetCtryInfo(USHORT, PCOUNTRYCODE, PCOUNTRYINFO, PUSHORT);
580: USHORT APIENTRY DosGetDBCSEv(USHORT, PCOUNTRYCODE, PCHAR);
581: USHORT APIENTRY DosCaseMap(USHORT, PCOUNTRYCODE, PCHAR);
582: USHORT APIENTRY DosGetCollate(USHORT, PCOUNTRYCODE, PCHAR, PUSHORT);
583: USHORT APIENTRY DosGetCp(USHORT, PUSHORT, PUSHORT);
584: USHORT APIENTRY DosSetCp(USHORT, USHORT);
585:
586: #endif /* INCL_DOSNLS */
587:
588:
589: /*** Signal support */
590:
591: #ifdef INCL_DOSSIGNALS
592:
593: /* Signal Numbers for DosSetSigHandler */
594:
595: #define SIG_CTRLC 1 /* Control C */
596: #define SIG_BROKENPIPE 2 /* Broken Pipe */
597: #define SIG_KILLPROCESS 3 /* Program Termination */
598: #define SIG_CTRLBREAK 4 /* Control Break */
599: #define SIG_PFLG_A 5 /* Process Flag A */
600: #define SIG_PFLG_B 6 /* Process Flag B */
601: #define SIG_PFLG_C 7 /* Process Flag C */
602: #define SIG_CSIGNALS 8 /* number of signals plus one */
603:
604: /* Flag Numbers for DosFlagProcess */
605:
606: #define PFLG_A 0 /* Process Flag A */
607: #define PFLG_B 1 /* Process Flag B */
608: #define PFLG_C 2 /* Process Flag C */
609:
610: /* Signal actions */
611:
612: #define SIGA_KILL 0
613: #define SIGA_IGNORE 1
614: #define SIGA_ACCEPT 2
615: #define SIGA_ERROR 3
616: #define SIGA_ACKNOWLEDGE 4
617:
618: /* DosHoldSignal constants */
619:
620: #define HLDSIG_ENABLE 0
621: #define HLDSIG_DISABLE 1
622:
623: /* DosFlagProcess codes */
624:
625: #define FLGP_SUBTREE 0
626: #define FLGP_PID 1
627:
628: typedef VOID (FAR PASCAL *PFNSIGHANDLER)(USHORT, USHORT);
629:
630: USHORT APIENTRY DosSetSigHandler(PFNSIGHANDLER, PFNSIGHANDLER FAR *, PUSHORT, USHORT, USHORT);
631: USHORT APIENTRY DosFlagProcess(PID, USHORT, USHORT, USHORT);
632: USHORT APIENTRY DosHoldSignal(USHORT);
633: USHORT APIENTRY DosSendSignal(USHORT, USHORT);
634:
635: #endif /* INCL_DOSSIGNALS */
636:
637:
638: /*** Monitor support */
639:
640: #ifdef INCL_DOSMONITORS
641:
642: typedef SHANDLE HMONITOR; /* hmon */
643: typedef HMONITOR FAR *PHMONITOR;
644:
645: USHORT APIENTRY DosMonOpen(PSZ, PHMONITOR);
646: USHORT APIENTRY DosMonClose(HMONITOR);
647: USHORT APIENTRY DosMonReg(HMONITOR, PBYTE, PBYTE, USHORT, USHORT);
648: USHORT APIENTRY DosMonRead(PBYTE, UCHAR, PBYTE, PUSHORT);
649: USHORT APIENTRY DosMonWrite(PBYTE, PBYTE, USHORT);
650:
651: #endif /* INCL_DOSMONITORS */
652:
653:
654: /*** Pipe and queue support */
655:
656: #ifdef INCL_DOSQUEUES
657:
658: typedef SHANDLE HQUEUE; /* hq */
659: typedef HQUEUE FAR *PHQUEUE;
660:
661: USHORT APIENTRY DosMakePipe(PHFILE, PHFILE, USHORT);
662: USHORT APIENTRY DosCloseQueue(HQUEUE);
663: USHORT APIENTRY DosCreateQueue(PHQUEUE, USHORT, PSZ);
664: USHORT APIENTRY DosOpenQueue(PUSHORT, PHQUEUE, PSZ);
665: USHORT APIENTRY DosPeekQueue(HQUEUE, PULONG, PUSHORT, PULONG, PUSHORT, UCHAR, PBYTE, ULONG);
666: USHORT APIENTRY DosPurgeQueue(HQUEUE);
667: USHORT APIENTRY DosQueryQueue(HQUEUE, PUSHORT);
668: USHORT APIENTRY DosReadQueue(HQUEUE, PULONG, PUSHORT, PULONG, USHORT, UCHAR, PBYTE, HSEM);
669: USHORT APIENTRY DosWriteQueue(HQUEUE, USHORT, USHORT, PBYTE, UCHAR);
670:
671: USHORT APIENTRY DosError(USHORT);
672: USHORT APIENTRY DosSetVec(USHORT, PFN, PFN);
673: USHORT APIENTRY DosGetMessage(PCHAR FAR *, USHORT, PCHAR, USHORT, USHORT, PSZ, PUSHORT);
674: USHORT APIENTRY DosErrClass(USHORT, PUSHORT, PUSHORT, PUSHORT);
675: USHORT APIENTRY DosInsMessage(PCHAR FAR *, USHORT, PSZ, USHORT, PCHAR, USHORT, PUSHORT);
676: USHORT APIENTRY DosPutMessage(USHORT, USHORT, PCHAR);
677: USHORT APIENTRY DosSysTrace(USHORT, USHORT, USHORT, PCHAR);
678: USHORT APIENTRY DosGetEnv(PUSHORT, PUSHORT);
679: USHORT APIENTRY DosScanEnv(PSZ, PSZ FAR *);
680: USHORT APIENTRY DosSearchPath(USHORT, PSZ, PSZ, PBYTE, USHORT);
681: USHORT APIENTRY DosGetVersion(PUSHORT);
682: USHORT APIENTRY DosGetMachineMode(PBYTE);
683:
684: #endif /* INCL_DOSQUEUES */
685:
686:
687: /*** Session manager support */
688:
689: #ifdef INCL_DOSSESMGR
690:
691: typedef struct _STARTDATA { /* stdata */
692: USHORT cb;
693: USHORT Related;
694: USHORT FgBg;
695: USHORT TraceOpt;
696: PSZ PgmTitle;
697: PSZ PgmName;
698: PBYTE PgmInputs;
699: PBYTE TermQ;
700: PBYTE Environment;
701: USHORT InheritOpt;
702: USHORT SessionType;
703: PSZ IconFile;
704: ULONG PgmHandle;
705: USHORT PgmControl;
706: USHORT InitXPos;
707: USHORT InitYPos;
708: USHORT InitXSize;
709: USHORT InitYSize;
710: } STARTDATA;
711: typedef STARTDATA FAR *PSTARTDATA;
712:
713: typedef struct _STATUSDATA { /* stsdata */
714: USHORT cb;
715: USHORT SelectInd;
716: USHORT BindInd;
717: } STATUSDATA;
718: typedef STATUSDATA FAR *PSTATUSDATA;
719:
720: USHORT APIENTRY DosStartSession(PSTARTDATA, PUSHORT, PUSHORT);
721: USHORT APIENTRY DosSetSession(USHORT, PSTATUSDATA);
722: USHORT APIENTRY DosSelectSession(USHORT, ULONG);
723: USHORT APIENTRY DosStopSession(USHORT, USHORT, ULONG);
724: USHORT APIENTRY DosQAppType(PSZ, PUSHORT);
725: USHORT APIENTRY DosSGNum(PUSHORT);
726: USHORT APIENTRY DosSGSwitch(USHORT);
727: USHORT APIENTRY DosSGSwitchMe(USHORT);
728:
729: #endif /* INCL_DOSSESMGR */
730:
731:
732: /*** Device support */
733:
734: #ifdef INCL_DOSDEVICES
735:
736: USHORT APIENTRY DosDevConfig(PVOID, USHORT, USHORT);
737: USHORT APIENTRY DosDevIOCtl(PVOID, PVOID, USHORT, USHORT, HFILE);
738:
739: USHORT APIENTRY DosCLIAccess(VOID);
740: USHORT APIENTRY DosIOAccess(USHORT, USHORT, USHORT, USHORT);
741: USHORT APIENTRY DosPortAccess(USHORT, USHORT, USHORT, USHORT);
742: USHORT APIENTRY DosPhysicalDisk(USHORT, PBYTE, USHORT, PBYTE, USHORT);
743:
744: USHORT APIENTRY DosR2StackRealloc(USHORT);
745: VOID APIENTRY DosCallback(PFN);
746:
747: #endif /* INCL_DOSDEVICES */
748:
749:
750: /*** DosProfile API support */
751:
752: #ifdef INCL_DOSPROFILE
753:
754: /* DosProfile ordinal number */
755:
756: #define PROF_ORDINAL 133
757:
758: /* DosProfile usType */
759:
760: #define PROF_SYSTEM 0
761: #define PROF_USER 1
762: #define PROF_USEDD 2
763: #define PROF_KERNEL 4
764: #define PROF_VERBOSE 8
765: #define PROF_ENABLE 16
766:
767: /* DosProfile usFunc */
768:
769: #define PROF_ALLOC 0
770: #define PROF_CLEAR 1
771: #define PROF_ON 2
772: #define PROF_OFF 3
773: #define PROF_DUMP 4
774: #define PROF_FREE 5
775:
776: /* DosProfile tic count granularity (DWORD) */
777:
778: #define PROF_SHIFT 2
779:
780: /* DosProfile module name string length */
781:
782: #define PROF_MOD_NAME_SIZE 10
783:
784: /* DosProfile error code for end of data */
785:
786: #define PROF_END_OF_DATA 13
787:
788: #endif /* INCL_DOSPROFILE */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.