|
|
1.1 root 1: /***************************************************************************\
2: *
3: * Module Name: BSEDOS.H
4: *
5: * OS/2 Base Include File
6: *
7: * This file is compatible with OS/2 version 1.0.
8: *
9: * Copyright (c) 1988 Microsoft Corporation
10: *
11: *****************************************************************************
12: *
13: * Subcomponents marked with "+" are partially included by default
14: *
15: * #define: To include:
16: *
17: * + INCL_DOSPROCESS Process and thread support
18: * INCL_DOSINFOSEG InfoSeg support
19: * + INCL_DOSFILEMGR File Management
20: * + INCL_DOSMEMMGR Memory Management
21: * + INCL_DOSSEMAPHORES Semaphore support
22: * + INCL_DOSDATETIME Date/Time and Timer support
23: * INCL_DOSMODULEMGR Module manager
24: * + INCL_DOSRESOURCES Resource support
25: * INCL_DOSNLS National Language Support
26: * INCL_DOSMISC Miscellaneous
27: * INCL_DOSSIGNALS Signals
28: * INCL_DOSMONITORS Monitors
29: * INCL_DOSQUEUES Queues
30: * INCL_DOSSESMGR Session Manager Support
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_DOSMISC
43: #define INCL_DOSSEMAPHORES
44: #define INCL_DOSDATETIME
45: #define INCL_DOSMODULEMGR
46: #define INCL_DOSRESOURCES
47: #define INCL_DOSNLS
48: #define INCL_DOSSIGNALS
49: #define INCL_DOSMONITORS
50: #define INCL_DOSQUEUES
51: #define INCL_DOSSESMGR
52:
53: #endif /* INCL_DOS */
54:
55: #ifdef INCL_ERRORS
56: #define INCL_DOSERRORS
57: #endif /* INCL_ERRORS */
58:
59: #if (defined(INCL_DOSPROCESS) | !defined(INCL_NOCOMMON))
60:
61: /*** General services */
62:
63: USHORT APIENTRY DosBeep(USHORT, USHORT);
64:
65: /*** Process and Thread support */
66:
67: VOID APIENTRY DosExit(USHORT, USHORT);
68:
69: /* DosExit codes */
70:
71: #define EXIT_THREAD 0
72: #define EXIT_PROCESS 1
73:
74: #endif /* common INCL_DOSPROCESS stuff */
75:
76: #ifdef INCL_DOSPROCESS
77:
78: typedef struct _PIDINFO { /* pidi */
79: PID pid;
80: TID tid;
81: PID pidParent;
82: } PIDINFO;
83: typedef PIDINFO FAR *PPIDINFO;
84:
85: USHORT APIENTRY DosCreateThread(VOID (FAR *)(VOID), PTID, PBYTE);
86: USHORT APIENTRY DosResumeThread(TID);
87: USHORT APIENTRY DosSuspendThread(TID);
88:
89: /* Action code values */
90:
91: #define DCWA_PROCESS 0
92: #define DCWA_PROCESSTREE 1
93:
94: /* Wait option values */
95:
96: #define DCWW_WAIT 0
97: #define DCWW_NOWAIT 1
98:
99: typedef struct _RESULTCODES { /* resc */
100: USHORT codeTerminate;
101: USHORT codeResult;
102: } RESULTCODES;
103: typedef RESULTCODES FAR *PRESULTCODES;
104:
105: USHORT APIENTRY DosCWait(USHORT, USHORT, PRESULTCODES, PPID, PID);
106: USHORT APIENTRY DosSleep(ULONG);
107:
108: /* codeTerminate values (also passed to ExitList routines) */
109:
110: #define TC_EXIT 0
111: #define TC_HARDERROR 1
112: #define TC_TRAP 2
113: #define TC_KILLPROCESS 3
114:
115: VOID APIENTRY DosEnterCritSec(VOID);
116: VOID APIENTRY DosExitCritSec(VOID);
117: USHORT APIENTRY DosExitList(USHORT, VOID (FAR *)(USHORT));
118:
119: /* DosExitList functions */
120:
121: #define EXLST_ADD 1
122: #define EXLST_REMOVE 2
123: #define EXLST_EXIT 3
124:
125: USHORT APIENTRY DosExecPgm(PCHAR, USHORT, USHORT, PSZ, PSZ, PRESULTCODES, PSZ);
126:
127: /* DosExecPgm functions */
128:
129: #define EXEC_SYNC 0
130: #define EXEC_ASYNC 1
131: #define EXEC_ASYNCRESULT 2
132: #define EXEC_TRACE 3
133: #define EXEC_BACKGROUND 4
134: #define EXEC_LOAD 5
135:
136: USHORT APIENTRY DosGetPid(PPIDINFO);
137:
138: USHORT APIENTRY DosGetPrty(USHORT, PUSHORT, USHORT);
139: USHORT APIENTRY DosSetPrty(USHORT, USHORT, SHORT, USHORT);
140:
141: /* Priority scopes */
142:
143: #define PRTYS_PROCESS 0
144: #define PRTYS_PROCESSTREE 1
145: #define PRTYS_THREAD 2
146:
147: /* Priority classes */
148:
149: #define PRTYC_NOCHANGE 0
150: #define PRTYC_IDLETIME 1
151: #define PRTYC_REGULAR 2
152: #define PRTYC_TIMECRITICAL 3
153:
154: USHORT APIENTRY DosKillProcess(USHORT, PID);
155:
156: #define DKP_PROCESS 0
157: #define DKP_PROCESSTREE 1
158:
159: #endif /* INCL_DOSPROCESS */
160:
161:
162: /*** InfoSeg support */
163:
164: #ifdef INCL_DOSINFOSEG
165:
166: /* Global Info Seg */
167:
168: typedef struct _GINFOSEG { /* gis */
169: ULONG time;
170: ULONG msecs;
171: UCHAR hour;
172: UCHAR minutes;
173: UCHAR seconds;
174: UCHAR hundredths;
175: USHORT timezone;
176: USHORT cusecTimerInterval;
177: UCHAR day;
178: UCHAR month;
179: USHORT year;
180: UCHAR weekday;
181: UCHAR uchMajorVersion;
182: UCHAR uchMinorVersion;
183: UCHAR chRevisionLetter;
184: UCHAR sgCurrent;
185: UCHAR sgMax;
186: UCHAR cHugeShift;
187: UCHAR fProtectModeOnly;
188: USHORT pidForeground;
189: UCHAR fDynamicSched;
190: UCHAR csecMaxWait;
191: USHORT cmsecMinSlice;
192: USHORT cmsecMaxSlice;
193: USHORT bootdrive;
194: UCHAR amecRAS[32];
195: } GINFOSEG;
196: typedef GINFOSEG FAR *PGINFOSEG;
197:
198: /* Local Info Seg */
199:
200: typedef struct _LINFOSEG { /* lis */
201: PID pidCurrent;
202: PID pidParent;
203: USHORT prtyCurrent;
204: TID tidCurrent;
205: USHORT sgCurrent;
206: USHORT sgSub;
207: BOOL fForeground;
208: } LINFOSEG;
209: typedef LINFOSEG FAR *PLINFOSEG;
210:
211: /* Process Type codes (local info seg typeProcess field) */
212:
213: #define PT_FULLSCREEN 0
214: #define PT_REALMODE 1
215: #define PT_WINDOWABLEVIO 2
216: #define PT_PM 3
217: #define PT_DETACHED 4
218:
219: USHORT APIENTRY DosGetInfoSeg(PSEL, PSEL);
220:
221: /* Helper macros used to convert selector to PINFOSEG or LINFOSEG */
222:
223: #define MAKEPGINFOSEG(sel) ((PGINFOSEG)MAKEP(sel, 0))
224: #define MAKEPLINFOSEG(sel) ((PLINFOSEG)MAKEP(sel, 0))
225:
226: #endif /* INCL_DOSINFOSEG */
227:
228: #if (defined(INCL_DOSFILEMGR) | !defined(INCL_NOCOMMON))
229:
230: /*** File manager */
231:
232: USHORT APIENTRY DosOpen(PSZ, PHFILE, PUSHORT, ULONG, USHORT, USHORT, USHORT, ULONG);
233: USHORT APIENTRY DosClose(HFILE);
234: USHORT APIENTRY DosRead(HFILE, PVOID, USHORT, PUSHORT);
235: USHORT APIENTRY DosWrite(HFILE, PVOID, USHORT, PUSHORT);
236:
237: /* File time and date types */
238:
239: typedef struct _FILESTATUS { /* fsts */
240: FDATE fdateCreation;
241: FTIME ftimeCreation;
242: FDATE fdateLastAccess;
243: FTIME ftimeLastAccess;
244: FDATE fdateLastWrite;
245: FTIME ftimeLastWrite;
246: ULONG cbFile;
247: ULONG cbFileAlloc;
248: USHORT attrFile;
249: } FILESTATUS;
250: typedef FILESTATUS FAR *PFILESTATUS;
251:
252: typedef struct _FSALLOCATE { /* fsalloc */
253: ULONG idFileSystem;
254: ULONG cSectorUnit;
255: ULONG cUnit;
256: ULONG cUnitAvail;
257: USHORT cbSector;
258: } FSALLOCATE;
259: typedef FSALLOCATE FAR *PFSALLOCATE;
260:
261: typedef SHANDLE HDIR; /* hdir */
262: typedef HDIR FAR *PHDIR;
263:
264: USHORT APIENTRY DosDelete(PSZ, ULONG);
265: USHORT APIENTRY DosDupHandle(HFILE, PHFILE);
266:
267: USHORT APIENTRY DosQFHandState(HFILE, PUSHORT);
268: USHORT APIENTRY DosSetFHandState(HFILE, USHORT);
269: USHORT APIENTRY DosQHandType(HFILE, PUSHORT, PUSHORT);
270:
271: USHORT APIENTRY DosReadAsync (HFILE, PULONG, PUSHORT, PVOID, USHORT, PUSHORT);
272: USHORT APIENTRY DosWriteAsync(HFILE, PULONG, PUSHORT, PVOID, USHORT, PUSHORT);
273:
274: USHORT APIENTRY DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
275: USHORT APIENTRY DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
276: USHORT APIENTRY DosFindClose(HDIR);
277:
278: USHORT APIENTRY DosNewSize(HFILE, ULONG);
279: USHORT APIENTRY DosBufReset(HFILE);
280:
281: USHORT APIENTRY DosChgFilePtr(HFILE, LONG, USHORT, PULONG);
282:
283: USHORT APIENTRY DosFileLocks(HFILE, PLONG, PLONG);
284:
285: USHORT APIENTRY DosMove(PSZ, PSZ, ULONG);
286: USHORT APIENTRY DosMkdir(PSZ, ULONG);
287: USHORT APIENTRY DosRmdir(PSZ, ULONG);
288: USHORT APIENTRY DosSelectDisk(USHORT);
289: USHORT APIENTRY DosQCurDisk(PUSHORT, PULONG);
290:
291: USHORT APIENTRY DosChdir(PSZ, ULONG);
292: USHORT APIENTRY DosQCurDir(USHORT, PBYTE, PUSHORT);
293:
294: USHORT APIENTRY DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
295: USHORT APIENTRY DosSetFSInfo(USHORT, USHORT, PBYTE, USHORT);
296: USHORT APIENTRY DosQVerify(PUSHORT);
297: USHORT APIENTRY DosSetVerify(USHORT);
298: USHORT APIENTRY DosSetMaxFH(USHORT);
299:
300: USHORT APIENTRY DosQFileInfo(HFILE, USHORT, PFILESTATUS, USHORT);
301: USHORT APIENTRY DosSetFileInfo(HFILE, USHORT, PFILESTATUS, USHORT);
302:
303: USHORT APIENTRY DosQFileMode(PSZ, PUSHORT, ULONG);
304: USHORT APIENTRY DosSetFileMode(PSZ, USHORT, ULONG);
305:
306: #endif /* common INCL_DOSFILEMGR */
307:
308: #if (defined(INCL_DOSMEMMGR) | !defined(INCL_NOCOMMON))
309: /*** Memory management */
310:
311: USHORT APIENTRY DosAllocSeg(USHORT, PSEL, USHORT);
312: USHORT APIENTRY DosReallocSeg(USHORT, SEL);
313: USHORT APIENTRY DosFreeSeg(SEL);
314: USHORT APIENTRY DosGiveSeg(SEL, PID, PSEL);
315: USHORT APIENTRY DosGetSeg(SEL);
316:
317: /* Segment attribute flags (used with DosAllocSeg) */
318:
319: #define SEG_GIVEABLE 0x0001
320: #define SEG_GETTABLE 0x0002
321: #define SEG_DISCARDABLE 0x0004
322:
323: #endif /* common INCL_DOSMEMMGR */
324:
325: #ifdef INCL_DOSMEMMGR
326:
327: USHORT APIENTRY DosAllocHuge(USHORT, USHORT, PSEL, USHORT, USHORT);
328: USHORT APIENTRY DosReallocHuge(USHORT, USHORT, SEL);
329: USHORT APIENTRY DosGetHugeShift(PUSHORT);
330:
331: USHORT APIENTRY DosAllocShrSeg(USHORT, PSZ, PSEL);
332:
333: USHORT APIENTRY DosLockSeg(SEL);
334: USHORT APIENTRY DosUnlockSeg(SEL);
335:
336: USHORT APIENTRY DosGetShrSeg(PSZ, PSEL);
337:
338: USHORT APIENTRY DosMemAvail(PULONG);
339: USHORT APIENTRY DosCreateCSAlias(SEL, PSEL);
340:
341: USHORT APIENTRY DosSubAlloc(SEL, PUSHORT, USHORT);
342: USHORT APIENTRY DosSubFree(SEL, USHORT, USHORT);
343: USHORT APIENTRY DosSubSet(SEL, USHORT, USHORT);
344:
345: #endif /* INCL_DOSMEMMGR */
346:
347: #if (defined(INCL_DOSSEMAPHORES) | !defined(INCL_NOCOMMON))
348:
349: /*** Semaphore support */
350:
351: USHORT APIENTRY DosSemClear(HSEM);
352: USHORT APIENTRY DosSemSet(HSEM);
353: USHORT APIENTRY DosSemWait(HSEM, LONG);
354: USHORT APIENTRY DosSemSetWait(HSEM, LONG);
355: USHORT APIENTRY DosSemRequest(HSEM, LONG);
356:
357: #endif /* common INCL_DOSSEMAPHORES */
358:
359: #ifdef INCL_DOSSEMAPHORES
360:
361: typedef LHANDLE HSYSSEM; /* hssm */
362: typedef HSYSSEM FAR *PHSYSSEM;
363:
364: USHORT APIENTRY DosCreateSem(USHORT, PHSYSSEM, PSZ);
365:
366: #define CSEM_PRIVATE 0
367: #define CSEM_PUBLIC 1
368:
369: USHORT APIENTRY DosOpenSem(PHSEM, PSZ);
370: USHORT APIENTRY DosCloseSem(HSEM);
371:
372: typedef struct _MUXSEM { /* mxs */
373: USHORT zero;
374: HSEM hsem;
375: } MUXSEM;
376: typedef MUXSEM FAR *PMUXSEM;
377:
378: typedef struct _MUXSEMLIST { /* mxsl */
379: USHORT cmxs;
380: MUXSEM amxs[16];
381: } MUXSEMLIST;
382: typedef MUXSEMLIST FAR *PMUXSEMLIST;
383:
384: /*
385: * Since a MUXSEMLIST structure is actually a variable length
386: * structure, the following macro may be used to define a MUXSEMLIST
387: * structure having size elements, named "name".
388: */
389: #define DEFINEMUXSEMLIST(name, size) \
390: struct { \
391: USHORT cmxs; \
392: MUXSEM amxs[size]; \
393: } name;
394:
395: /*
396: * This function actually takes a far pointer to a MUXSEMLIST structure
397: * as its second parameter, but in order to allow its use with the
398: * DEFINEMUXSEMLIST macro, it is declared here as PVOID.
399: */
400: USHORT APIENTRY DosMuxSemWait(PUSHORT, PVOID, LONG);
401:
402: #endif /* INCL_DOSSEMAPHORES */
403:
404: #if (defined(INCL_DOSDATETIME) | !defined(INCL_NOCOMMON))
405:
406: /*** Time support */
407:
408: typedef struct _DATETIME { /* date */
409: UCHAR hours;
410: UCHAR minutes;
411: UCHAR seconds;
412: UCHAR hundredths;
413: UCHAR day;
414: UCHAR month;
415: USHORT year;
416: SHORT timezone;
417: UCHAR weekday;
418: } DATETIME;
419: typedef DATETIME FAR *PDATETIME;
420:
421: USHORT APIENTRY DosGetDateTime(PDATETIME);
422: USHORT APIENTRY DosSetDateTime(PDATETIME);
423:
424: #endif /* common INCL_DOSDATETIME */
425:
426: #ifdef INCL_DOSDATETIME
427:
428: typedef SHANDLE HTIMER;
429: typedef HTIMER FAR *PHTIMER;
430:
431: USHORT APIENTRY DosTimerAsync(ULONG, HSEM, PHTIMER);
432: USHORT APIENTRY DosTimerStart(ULONG, HSEM, PHTIMER);
433: USHORT APIENTRY DosTimerStop(HTIMER);
434:
435: #endif /* INCL_DOSDATETIME */
436:
437:
438: /*** Module manager */
439:
440: #ifdef INCL_DOSMODULEMGR
441:
442: USHORT APIENTRY DosLoadModule(PSZ, USHORT, PSZ, PHMODULE);
443: USHORT APIENTRY DosFreeModule(HMODULE);
444: USHORT APIENTRY DosGetProcAddr(HMODULE, PSZ, PPFN);
445: USHORT APIENTRY DosGetModHandle(PSZ, PHMODULE);
446: USHORT APIENTRY DosGetModName(HMODULE, USHORT, PCHAR);
447:
448: #endif /* INCL_DOSMODULEMGR */
449:
450:
451: /*** NLS Support */
452:
453: #ifdef INCL_DOSNLS
454:
455: typedef struct _COUNTRYCODE { /* ctryc */
456: USHORT country;
457: USHORT codepage;
458: } COUNTRYCODE;
459: typedef COUNTRYCODE FAR *PCOUNTRYCODE;
460:
461: typedef struct _COUNTRYINFO { /* ctryi */
462: USHORT country;
463: USHORT codepage;
464: USHORT fsDateFmt;
465: CHAR szCurrency[5];
466: CHAR szThousandsSeparator[2];
467: CHAR szDecimal[2];
468: CHAR szDateSeparator[2];
469: CHAR szTimeSeparator[2];
470: UCHAR fsCurrencyFmt;
471: UCHAR cDecimalPlace;
472: UCHAR fsTimeFmt;
473: USHORT abReserved1[2];
474: CHAR szDataSeparator[2];
475: USHORT abReserved2[5];
476: } COUNTRYINFO;
477: typedef COUNTRYINFO FAR *PCOUNTRYINFO;
478:
479: USHORT APIENTRY DosGetCtryInfo(USHORT, PCOUNTRYCODE, PCOUNTRYINFO, PUSHORT);
480: USHORT APIENTRY DosGetDBCSEv(USHORT, PCOUNTRYCODE, PCHAR);
481: USHORT APIENTRY DosCaseMap(USHORT, PCOUNTRYCODE, PCHAR);
482: USHORT APIENTRY DosGetCollate(USHORT, PCOUNTRYCODE, PCHAR, PUSHORT);
483: USHORT APIENTRY DosGetCp(USHORT, PUSHORT, PUSHORT);
484: USHORT APIENTRY DosSetCp(USHORT, USHORT);
485:
486: #endif /* INCL_DOSNLS */
487:
488:
489: /*** Signal support */
490:
491: #ifdef INCL_DOSSIGNALS
492:
493: /* Signal Numbers for DosSetSigHandler */
494:
495: #define SIG_CTRLC 1 /* Control C */
496: #define SIG_BROKENPIPE 2 /* Broken Pipe */
497: #define SIG_KILLPROCESS 3 /* Program Termination */
498: #define SIG_CTRLBREAK 4 /* Control Break */
499: #define SIG_PFLG_A 5 /* Process Flag A */
500: #define SIG_PFLG_B 6 /* Process Flag B */
501: #define SIG_PFLG_C 7 /* Process Flag C */
502: #define SIG_CSIGNALS 8 /* number of signals plus one */
503:
504: /* Flag Numbers for DosFlagProcess */
505:
506: #define PFLG_A 0 /* Process Flag A */
507: #define PFLG_B 1 /* Process Flag B */
508: #define PFLG_C 2 /* Process Flag C */
509:
510: /* Signal actions */
511:
512: #define SIGA_KILL 0
513: #define SIGA_IGNORE 1
514: #define SIGA_ACCEPT 2
515: #define SIGA_ERROR 3
516: #define SIGA_ACKNOWLEDGE 4
517:
518: /* DosHoldSignal constants */
519:
520: #define HLDSIG_ENABLE 0
521: #define HLDSIG_DISABLE 1
522:
523: /* DosFlagProcess codes */
524:
525: #define FLGP_SUBTREE 0
526: #define FLGP_PID 1
527:
528: typedef VOID (FAR PASCAL *PFNSIGHANDLER)(USHORT, USHORT);
529:
530: USHORT APIENTRY DosSetSigHandler(PFNSIGHANDLER, PFNSIGHANDLER FAR *, PUSHORT, USHORT, USHORT);
531: USHORT APIENTRY DosFlagProcess(PID, USHORT, USHORT, USHORT);
532: USHORT APIENTRY DosHoldSignal(USHORT);
533: USHORT APIENTRY DosSendSignal(USHORT, USHORT);
534:
535: #endif /* INCL_DOSSIGNALS */
536:
537:
538: /*** Monitor support */
539:
540: #ifdef INCL_DOSMONITORS
541:
542: typedef SHANDLE HMONITOR; /* hmon */
543: typedef HMONITOR FAR *PHMONITOR;
544:
545: USHORT APIENTRY DosMonOpen(PSZ, PHMONITOR);
546: USHORT APIENTRY DosMonClose(HMONITOR);
547: USHORT APIENTRY DosMonReg(HMONITOR, PBYTE, PBYTE, USHORT, USHORT);
548: USHORT APIENTRY DosMonRead(PBYTE, USHORT, PBYTE, PUSHORT);
549: USHORT APIENTRY DosMonWrite(PBYTE, PBYTE, USHORT);
550:
551: #endif /* INCL_DOSMONITORS */
552:
553:
554: /*** Pipe and queue support */
555:
556: #ifdef INCL_DOSQUEUES
557:
558: typedef SHANDLE HQUEUE; /* hq */
559: typedef HQUEUE FAR *PHQUEUE;
560:
561: USHORT APIENTRY DosMakePipe(PHFILE, PHFILE, USHORT);
562: USHORT APIENTRY DosCloseQueue(HQUEUE);
563: USHORT APIENTRY DosCreateQueue(PHQUEUE, USHORT, PSZ);
564: USHORT APIENTRY DosOpenQueue(PUSHORT, PHQUEUE, PSZ);
565: USHORT APIENTRY DosPeekQueue(HQUEUE, PULONG, PUSHORT, PULONG, PUSHORT, USHORT, PBYTE, HSEM);
566: USHORT APIENTRY DosPurgeQueue(HQUEUE);
567: USHORT APIENTRY DosQueryQueue(HQUEUE, PUSHORT);
568: USHORT APIENTRY DosReadQueue(HQUEUE, PULONG, PUSHORT, PULONG, USHORT, USHORT, PBYTE, HSEM);
569: USHORT APIENTRY DosWriteQueue(HQUEUE, USHORT, USHORT, PBYTE, USHORT);
570:
571: #endif /* INCL_DOSQUEUES */
572:
573:
574: /*** Miscellaneous functions */
575:
576: #ifdef INCL_DOSMISC
577:
578: USHORT APIENTRY DosError(USHORT);
579: USHORT APIENTRY DosSetVec(USHORT, PFN, PPFN);
580: USHORT APIENTRY DosGetMessage(PCHAR FAR *, USHORT, PCHAR, USHORT, USHORT, PSZ, PUSHORT);
581: USHORT APIENTRY DosErrClass(USHORT, PUSHORT, PUSHORT, PUSHORT);
582: USHORT APIENTRY DosInsMessage(PCHAR FAR *, USHORT, PSZ, USHORT, PCHAR, USHORT, PUSHORT);
583: USHORT APIENTRY DosPutMessage(HFILE, USHORT, PCHAR);
584: USHORT APIENTRY DosGetEnv(PUSHORT, PUSHORT);
585: USHORT APIENTRY DosScanEnv(PSZ, PSZ FAR *);
586: USHORT APIENTRY DosSearchPath(USHORT, PSZ, PSZ, PBYTE, USHORT);
587: USHORT APIENTRY DosGetVersion(PUSHORT);
588: USHORT APIENTRY DosGetMachineMode(PBYTE);
589:
590: #endif /* INCL_DOSMISC */
591:
592:
593: /*** Session manager support */
594:
595: #ifdef INCL_DOSSESMGR
596:
597: typedef struct _STARTDATA { /* stdata */
598: USHORT cb;
599: USHORT Related;
600: USHORT FgBg;
601: USHORT TraceOpt;
602: PSZ PgmTitle;
603: PSZ PgmName;
604: PBYTE PgmInputs;
605: PBYTE TermQ;
606: } STARTDATA;
607: typedef STARTDATA FAR *PSTARTDATA;
608:
609: typedef struct _STATUSDATA { /* stsdata */
610: USHORT cb;
611: USHORT SelectInd;
612: USHORT BindInd;
613: } STATUSDATA;
614: typedef STATUSDATA FAR *PSTATUSDATA;
615:
616: USHORT APIENTRY DosStartSession(PSTARTDATA, PUSHORT, PUSHORT);
617: USHORT APIENTRY DosSetSession(USHORT, PSTATUSDATA);
618: USHORT APIENTRY DosSelectSession(USHORT, ULONG);
619: USHORT APIENTRY DosStopSession(USHORT, USHORT, ULONG);
620:
621: #endif /* INCL_DOSSESMGR */
622:
623:
624: /*** Device support */
625:
626: #ifdef INCL_DOSDEVICES
627:
628: USHORT APIENTRY DosDevConfig(PVOID, USHORT, USHORT);
629: USHORT APIENTRY DosDevIOCtl(PVOID, PVOID, USHORT, USHORT, USHORT);
630: USHORT APIENTRY DosSystemService(USHORT, PVOID, PVOID);
631:
632: USHORT APIENTRY DosCLIAccess(VOID);
633: USHORT APIENTRY DosPortAccess(USHORT, USHORT, USHORT, USHORT);
634: USHORT APIENTRY DosPhysicalDisk(USHORT, PBYTE, USHORT, PBYTE, USHORT);
635:
636: #endif /* INCL_DOSDEVICES */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.