|
|
1.1 root 1: /*static char *SCCSID = "@(#)bsedos16.h 1.29 90/04/20";*/
2: /***************************************************************************\
3: *
4: * Module Name: BSEDOS16.H
5: *
6: * OS/2 Base Include File for 16-bit API
7: *
8: * Copyright (c) International Business Machines Corporation 1987
9: * Copyright (c) Microsoft Corporation 1987
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_DOSSIGNALS Signals
27: * INCL_DOSMISC Miscellaneous
28: * INCL_DOSMONITORS Monitors
29: * INCL_DOSQUEUES Queues
30: * INCL_DOSSESMGR Session Manager Support
31: * INCL_DOSDEVICES Device specific, ring 2 support
32: * INCL_DOSNMPIPES Named Pipes Support
33: * INCL_DOSPROFILE DosProfile API
34: * INCL_DOSMVDM MVDM support
35: *
36: *
37: \***************************************************************************/
38:
39: #define INCL_DOSINCLUDED
40:
41: #ifndef INCL_BASEINCLUDED
42: #if !(defined(INCL_32) || defined(INCL_16))
43: #ifdef M_I386
44: #define INCL_32
45: #else /* not M_I386 */
46: #define INCL_16
47: #endif /* M_I386 */
48: #endif /* INCL_32 || INCL_16 */
49:
50: #if !defined(INCL_16)
51: #pragma message ("16-bit Base API included when using 32-bit compiler")
52: #endif /* INCL_32 */
53: #endif /* INCL_BASEINCLUDED */
54:
55: #ifdef INCL_DOS
56:
57: #define INCL_DOSPROCESS
58: #define INCL_DOSINFOSEG
59: #define INCL_DOSFILEMGR
60: #define INCL_DOSMEMMGR
61: #define INCL_DOSSEMAPHORES
62: #define INCL_DOSDATETIME
63: #define INCL_DOSMODULEMGR
64: #define INCL_DOSRESOURCES
65: #define INCL_DOSNLS
66: #define INCL_DOSSIGNALS
67: #define INCL_DOSMISC
68: #define INCL_DOSMONITORS
69: #define INCL_DOSQUEUES
70: #define INCL_DOSSESMGR
71: #define INCL_DOSDEVICES
72: #define INCL_DOSNMPIPES
73: #define INCL_DOSPROFILE
74: #define INCL_DOSMVDM
75:
76: #endif /* INCL_DOS */
77:
78: #ifdef INCL_ERRORS
79: #define INCL_DOSERRORS
80: #endif /* INCL_ERRORS */
81:
82: #if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON))
83:
84: /* XLATOFF */
85: #ifndef INCL_NOXLATE_DOS16
86: #define DosBeep Dos16Beep
87: #define DosExit Dos16Exit
88: #endif /* INCL_NOXLATE_DOS16 */
89: /* XLATON */
90:
91: /*** General services */
92:
93: APIRET APIENTRY DosBeep(USHORT usFrequency, USHORT usDuration);
94:
95: /*** Process and Thread support */
96:
97: VOID APIENTRY DosExit(USHORT fTerminate, USHORT usExitCode);
98:
99: /* DosExit codes */
100: #define EXIT_THREAD 0
101: #define EXIT_PROCESS 1
102:
103: #endif /* common INCL_DOSPROCESS definitions */
104:
105: #ifdef INCL_DOSPROCESS
106:
107: typedef struct _PIDINFO { /* pidi */
108: PID pid;
109: TID tid;
110: PID pidParent;
111: } PIDINFO;
112: typedef PIDINFO FAR *PPIDINFO;
113:
114: #ifdef M_I386
115: typedef VOID (*PFNTHREAD)(VOID); /* doesn't need to be PASCAL, */
116: /* since it takes no parameters */
117: #else /* not M_I386 */
118: typedef VOID (FAR *PFNTHREAD)(VOID); /* doesn't need to be PASCAL, */
119: /* since it takes no parameters */
120: #endif /* M_I386 */
121:
122: /* XLATOFF */
123: #ifndef INCL_NOXLATE_DOS16
124: #define DosCreateThread Dos16CreateThread
125: #define DosResumeThread Dos16ResumeThread
126: #define DosSuspendThread Dos16SuspendThread
127: #define DosCwait Dos16Cwait
128: #define DosSleep Dos16Sleep
129: #define DosExecPgm Dos16ExecPgm
130: #define DosEnterCritSec Dos16EnterCritSec
131: #define DosExitCritSec Dos16ExitCritSec
132: #define DosExitList Dos16ExitList
133: #define DosGetPrty Dos16GetPrty
134: #define DosSetPrty Dos16SetPrty
135: #define DosGetPID Dos16GetPID
136: #define DosGetPPID Dos16GetPPID
137: #define DosKillProcess Dos16KillProcess
138: #endif /* INCL_NOXLATE_DOS16 */
139: /* XLATON */
140:
141: APIRET APIENTRY DosCreateThread(PFNTHREAD pfnFun, PTID pTid, PBYTE pbStack);
142: APIRET APIENTRY DosResumeThread(TID tid);
143: APIRET APIENTRY DosSuspendThread(TID tid);
144:
145: /* Action code values */
146: #define DCWA_PROCESS 0
147: #define DCWA_PROCESSTREE 1
148:
149: /* Wait option values */
150: #define DCWW_WAIT 0
151: #define DCWW_NOWAIT 1
152:
153: typedef struct _RESULTCODES { /* resc */
154: USHORT codeTerminate;
155: USHORT codeResult;
156: } RESULTCODES;
157: typedef RESULTCODES FAR *PRESULTCODES;
158:
159: APIRET APIENTRY DosCwait(USHORT fScope, USHORT fWait, PRESULTCODES prescResults,
160: PPID ppidProcess, PID pidWaitProcess);
161: APIRET APIENTRY DosSleep(ULONG ulTime);
162:
163: /* codeTerminate values (also passed to ExitList routines) */
164: #define TC_EXIT 0
165: #define TC_HARDERROR 1
166: #define TC_TRAP 2
167: #define TC_KILLPROCESS 3
168:
169: typedef VOID (PASCAL FAR *PFNEXITLIST)(USHORT);
170:
171: APIRET APIENTRY DosEnterCritSec(VOID);
172: APIRET APIENTRY DosExitCritSec(VOID);
173: APIRET APIENTRY DosExitList(USHORT fFnCode, PFNEXITLIST pfnFunction);
174:
175: /* DosExitList functions */
176: #define EXLST_ADD 1
177: #define EXLST_REMOVE 2
178: #define EXLST_EXIT 3
179:
180: APIRET APIENTRY DosExecPgm(PCHAR pchFailName, SHORT cbFailName,
181: USHORT fExecFlags, PSZ pszArgs, PSZ pszEnv,
182: PRESULTCODES prescResults, PSZ pszPgmName);
183:
184: /* DosExecPgm functions */
185: #define EXEC_SYNC 0
186: #define EXEC_ASYNC 1
187: #define EXEC_ASYNCRESULT 2
188: #define EXEC_TRACE 3
189: #define EXEC_BACKGROUND 4
190: #define EXEC_LOAD 5
191:
192: APIRET APIENTRY DosGetPID(PPIDINFO ppidInfo);
193: APIRET APIENTRY DosGetPPID(USHORT pidChild, PUSHORT ppidParent);
194:
195: APIRET APIENTRY DosGetPrty(USHORT usScope, PUSHORT pusPriority, USHORT pid);
196: APIRET APIENTRY DosSetPrty(USHORT usScope, USHORT fPrtyClass, SHORT sChange,
197: USHORT id);
198:
199: /* Priority scopes */
200: #define PRTYS_PROCESS 0
201: #define PRTYS_PROCESSTREE 1
202: #define PRTYS_THREAD 2
203:
204: /* Priority classes */
205: #define PRTYC_NOCHANGE 0
206: #define PRTYC_IDLETIME 1
207: #define PRTYC_REGULAR 2
208: #define PRTYC_TIMECRITICAL 3
209: #define PRTYC_FOREGROUNDSERVER 4
210:
211: /* Priority deltas */
212: #define PRTYD_MINIMUM -31
213: #define PRTYD_MAXIMUM 31
214:
215: APIRET APIENTRY DosKillProcess(USHORT usScope, PID pidProcess);
216:
217: #define DKP_PROCESSTREE 0
218: #define DKP_PROCESS 1
219:
220: #endif /* INCL_DOSPROCESS */
221:
222:
223: /*** InfoSeg support */
224:
225: #ifdef INCL_DOSINFOSEG
226:
227: /* Global Information Segment */
228:
229: typedef struct _GINFOSEG { /* gis */
230: ULONG time;
231: ULONG msecs;
232: UCHAR hour;
233: UCHAR minutes;
234: UCHAR seconds;
235: UCHAR hundredths;
236: USHORT timezone;
237: USHORT cusecTimerInterval;
238: UCHAR day;
239: UCHAR month;
240: USHORT year;
241: UCHAR weekday;
242: UCHAR uchMajorVersion;
243: UCHAR uchMinorVersion;
244: UCHAR chRevisionLetter;
245: UCHAR sgCurrent;
246: UCHAR sgMax;
247: UCHAR cHugeShift;
248: UCHAR fProtectModeOnly;
249: USHORT pidForeground;
250: UCHAR fDynamicSched;
251: UCHAR csecMaxWait;
252: USHORT cmsecMinSlice;
253: USHORT cmsecMaxSlice;
254: USHORT bootdrive;
255: UCHAR amecRAS[32];
256: UCHAR csgWindowableVioMax;
257: UCHAR csgPMMax;
258: } GINFOSEG;
259: typedef GINFOSEG FAR *PGINFOSEG;
260:
261: /* Local Information Segment */
262:
263: typedef struct _LINFOSEG { /* lis */
264: PID pidCurrent;
265: PID pidParent;
266: USHORT prtyCurrent;
267: TID tidCurrent;
268: USHORT sgCurrent;
269: UCHAR rfProcStatus;
270: UCHAR dummy1;
271: BOOL fForeground;
272: UCHAR typeProcess;
273: UCHAR dummy2;
274: SEL selEnvironment;
275: USHORT offCmdLine;
276: USHORT cbDataSegment;
277: USHORT cbStack;
278: USHORT cbHeap;
279: HMODULE hmod;
280: SEL selDS;
281: } LINFOSEG;
282: typedef LINFOSEG FAR *PLINFOSEG;
283:
284: /* Process Type codes (local information segment typeProcess field) */
285:
286: #define PT_FULLSCREEN 0 /* Full screen application */
287: #define PT_REALMODE 1 /* Real mode process */
288: #define PT_WINDOWABLEVIO 2 /* VIO windowable application */
289: #define PT_PM 3 /* Presentation Manager application */
290: #define PT_DETACHED 4 /* Detached application */
291:
292: /* Process Status Flag definitions (local info seg rfProcStatus field) */
293:
294: #define PS_EXITLIST 1 /* Thread is in exitlist routine */
295:
296:
297: /* XLATOFF */
298: #ifndef INCL_NOXLATE_DOS16
299: #define DosGetInfoSeg Dos16GetInfoSeg
300: #endif /* INCL_NOXLATE_DOS16 */
301: /* XLATON */
302:
303: APIRET APIENTRY DosGetInfoSeg(PSEL pselGlobal, PSEL pselLocal);
304:
305: /* Helper macros used to convert selector to PINFOSEG or LINFOSEG */
306:
307: #define MAKEPGINFOSEG(sel) ((PGINFOSEG)MAKEP(sel, 0))
308: #define MAKEPLINFOSEG(sel) ((PLINFOSEG)MAKEP(sel, 0))
309:
310: #endif /* INCL_DOSINFOSEG */
311:
312: #ifndef INCL_SAADEFS
313:
314: /*
315: * CCHMAXPATH is the maximum fully qualified path name length including
316: * the drive letter, colon, backslashes and terminating NULL.
317: */
318: #define CCHMAXPATH 260
319:
320: /*
321: * CCHMAXPATHCOMP is the maximum individual path component name length
322: * including a terminating NULL.
323: */
324: #define CCHMAXPATHCOMP 256
325:
326: #endif /* !INCL_SAADEFS */
327:
328: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
329:
330: /*** File manager */
331:
332: /* DosSetFilePtr() file position codes */
333:
334: #define FILE_BEGIN 0x0000 /* relative to beginning of file */
335: #define FILE_CURRENT 0x0001 /* relative to current fptr position*/
336: #define FILE_END 0x0002 /* relative to end of file */
337:
338: /* DosFindFirst/Next Directory handle types */
339:
340: #define HDIR_SYSTEM 1 /* Use system handle (1) */
341: #define HDIR_CREATE (-1) /* Allocate a new, unused handle */
342:
343: /* DosCopy control bits - may be or'ed together */
344: #define DCPY_EXISTING 0x00001 /* Copy even if target exists */
345: #define DCPY_APPEND 0x00002 /* Append to existing file, don't replace*/
346: #define DCPY_FAILEAS 0x00004 /* Fail if EAs not supported on target*/
347:
348: /* Dosopen/DosQFHandState/DosQueryFileInfo et al file attributes; also */
349: /* known as Dso File Mode bits... */
350: #define FILE_NORMAL 0x0000
351: #define FILE_READONLY 0x0001
352: #define FILE_HIDDEN 0x0002
353: #define FILE_SYSTEM 0x0004
354: #define FILE_DIRECTORY 0x0010
355: #define FILE_ARCHIVED 0x0020
356:
357: /* DosOpen() actions */
358: #define FILE_EXISTED 0x0001
359: #define FILE_CREATED 0x0002
360: #define FILE_TRUNCATED 0x0003
361:
362: /* DosOpen() open flags */
363: #define FILE_OPEN 0x0001
364: #define FILE_TRUNCATE 0x0002
365: #define FILE_CREATE 0x0010
366:
367: /* applies if file already exists */
368:
369: #define OPEN_ACTION_FAIL_IF_EXISTS 0x0000 /* ---- ---- ---- 0000 */
370: #define OPEN_ACTION_OPEN_IF_EXISTS 0x0001 /* ---- ---- ---- 0001 */
371: #define OPEN_ACTION_REPLACE_IF_EXISTS 0x0002 /* ---- ---- ---- 0010 */
372:
373: /* applies if file does not exist */
374:
375: #define OPEN_ACTION_FAIL_IF_NEW 0x0000 /* ---- ---- 0000 ---- */
376: #define OPEN_ACTION_CREATE_IF_NEW 0x0010 /* ---- ---- 0001 ---- */
377:
378: /* DosOpen/DosSetFHandState flags */
379:
380: #define OPEN_ACCESS_READONLY 0x0000 /* ---- ---- ---- -000 */
381: #define OPEN_ACCESS_WRITEONLY 0x0001 /* ---- ---- ---- -001 */
382: #define OPEN_ACCESS_READWRITE 0x0002 /* ---- ---- ---- -010 */
383: #define OPEN_SHARE_DENYREADWRITE 0x0010 /* ---- ---- -001 ---- */
384: #define OPEN_SHARE_DENYWRITE 0x0020 /* ---- ---- -010 ---- */
385: #define OPEN_SHARE_DENYREAD 0x0030 /* ---- ---- -011 ---- */
386: #define OPEN_SHARE_DENYNONE 0x0040 /* ---- ---- -100 ---- */
387: #define OPEN_FLAGS_NOINHERIT 0x0080 /* ---- ---- 1--- ---- */
388: #define OPEN_FLAGS_NO_LOCALITY 0x0000 /* ---- -000 ---- ---- */
389: #define OPEN_FLAGS_SEQUENTIAL 0x0100 /* ---- -001 ---- ---- */
390: #define OPEN_FLAGS_RANDOM 0x0200 /* ---- -010 ---- ---- */
391: #define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300 /* ---- -011 ---- ---- */
392: #define OPEN_FLAGS_NO_CACHE 0x1000 /* ---1 ---- ---- ---- */
393: #define OPEN_FLAGS_FAIL_ON_ERROR 0x2000 /* --1- ---- ---- ---- */
394: #define OPEN_FLAGS_WRITE_THROUGH 0x4000 /* -1-- ---- ---- ---- */
395: #define OPEN_FLAGS_DASD 0x8000 /* 1--- ---- ---- ---- */
396:
397:
398: /* DosSearchPath() constants */
399:
400: #define SEARCH_PATH 0x0000
401: #define SEARCH_CUR_DIRECTORY 0x0001
402: #define SEARCH_ENVIRONMENT 0x0002
403: #define SEARCH_IGNORENETERRS 0x0004
404:
405: /*
406: * DosFileIO
407: */
408: /* File IO command words */
409: #define FIO_LOCK 0 /* Lock Files */
410: #define FIO_UNLOCK 1 /* Unlock Files */
411: #define FIO_SEEK 2 /* Seek (set file ptr) */
412: #define FIO_READ 3 /* File Read */
413: #define FIO_WRITE 4 /* File Write */
414:
415: /* Lock Sharing Modes */
416: #define FIO_NOSHARE 0 /* None */
417: #define FIO_SHAREREAD 1 /* Read-Only */
418:
419: typedef struct _FIOLOCKCMD { /* FLC FileLockCmd prefix */
420: USHORT usCmd; /* Cmd = FIO_LOCK */
421: USHORT cLockCnt; /* Lock records that follow */
422: ULONG cTimeOut; /* in Msec */
423: } FIOLOCKCMD;
424: typedef FIOLOCKCMD FAR *PFIOLOCKCMD;
425:
426:
427: typedef struct _FIOLOCKREC { /* FLR FileLockRecord */
428: USHORT fShare; /* FIO_NOSHARE or FIO_SHAREREAD */
429: ULONG cbStart; /* Starting offset for lock region */
430: ULONG cbLength; /* Length of lock region */
431: } FIOLOCKREC;
432: typedef FIOLOCKREC FAR *PFIOLOCKREC;
433:
434:
435: typedef struct _FIOUNLOCKCMD { /* FUC FileUnlockCmd prefix */
436: USHORT usCmd; /* Cmd = FIO_UNLOCK */
437: USHORT cUnlockCnt; /* Unlock records that follow */
438: } FIOUNLOCKCMD;
439: typedef FIOUNLOCKCMD FAR *PFIOUNLOCKCMD;
440:
441:
442: typedef struct _FIOUNLOCKREC { /* FUR FileUnlockRecord */
443: ULONG cbStart; /* Starting offset for unlock region */
444: ULONG cbLength; /* Length of unlock region */
445: } FIOUNLOCKREC;
446: typedef FIOUNLOCKREC FAR *PFIOUNLOCKREC;
447:
448:
449: typedef struct _FIOSEEKCMD { /* FSC Seek command structure */
450: USHORT usCmd; /* Cmd = FIO_SEEK */
451: USHORT fsMethod; /* One of&gml FPM_BEGINNING, FPM_CURRENT, */
452: /* or FPM_END */
453: ULONG cbDistance; /* Byte offset for seek */
454: ULONG cbNewPosition; /* Bytes from start of file after seek */
455: } FIOSEEKCMD;
456: typedef FIOSEEKCMD FAR *PFIOSEEKCMD;
457:
458:
459: typedef struct _FIOREADWRITE { /* RWC Read&Write command structure */
460: USHORT usCmd; /* Cmd = FIO_READ or FIO_WRITE */
461: PVOID pbBuffer; /* Pointer to data buffer */
462: ULONG cbBufferLen; /* Bytes in buffer or max size */
463: ULONG cbActualLen; /* Bytes actually read/written */
464: } FIOREADWRITE;
465: typedef FIOREADWRITE FAR *PFIOREADWRITE;
466:
467:
468: /***
469: * EA Info Levels & Find First/Next
470: * API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
471: * DosSetPathInfo
472: */
473:
474: /* File info levels : All listed API's */
475: #define FIL_STANDARD 1 /* Info level 1, standard file info */
476: #define FIL_QUERYEASIZE 2 /* Level 2, return Full EA size */
477: #define FIL_QUERYEASFROMLIST 3 /* Level 3, return requested EA's */
478: #define FIL_QUERYALLEAS 4 /* Level 4, return all EA's */
479:
480: /* File info levels: Dos...PathInfo only */
481: #define FIL_QUERYFULLNAME 5 /* Level 5, return fully qualified */
482: /* name of file */
483: #define FIL_NAMEISVALID 6 /* Level 6, check validity of */
484: /* file/path name for this FSD */
485:
486: /* DosFindNotifyFirst() */
487: #define FNOTIL_STANDARD 1 /* Find-Notify Info level 1&gml Return */
488: /* standard directory change info */
489:
490: /* DosFsAttach() */
491: /* Attact or detach */
492: #define FSATTACH 0 /* Attach file server */
493: #define FSDETACH 1 /* Detach file server */
494:
495: /* DosFsCtl() */
496: /* Routing type */
497: #define FSCTL_HANDLE 1 /* File Handle directs req routing */
498: #define FSCTL_PATHNAME 2 /* Path Name directs req routing */
499: #define FSCTL_FSDNAME 3 /* FSD Name directs req routing */
500:
501: /* DosQueryFSAttach() */
502: /* Information level types (defines method of query) */
503: #define FSAIL_QUERYNAME 1 /* Return data for a Drive or Device */
504: #define FSAIL_DEVNUMBER 2 /* Return data for Ordinal Device # */
505: #define FSAIL_DRVNUMBER 3 /* Return data for Ordinal Drive # */
506:
507: /* Item types (from data structure item "iType") */
508: #define FSAT_CHARDEV 1 /* Resident character device */
509: #define FSAT_PSEUDODEV 2 /* Pusedu-character device */
510: #define FSAT_LOCALDRV 3 /* Local drive */
511: #define FSAT_REMOTEDRV 4 /* Remote drive attached to FSD */
512:
513: typedef struct _FSQBUFFER { /* fsqbuf Data structure for QFSAttach*/
514: USHORT iType; /* Item type */
515: USHORT cbName; /* Length of item name, sans NULL */
516: UCHAR szName[1]; /* ASCIIZ item name */
517: USHORT cbFSDName; /* Length of FSD name, sans NULL */
518: UCHAR szFSDName[1]; /* ASCIIZ FSD name */
519: USHORT cbFSAData; /* Length of FSD Attach data returned */
520: UCHAR rgFSAData[1]; /* FSD Attach data from FSD */
521: } FSQBUFFER;
522: typedef FSQBUFFER FAR *PFSQBUFFER;
523:
524: /*
525: * File System Drive Information&gml DosQueryFSInfo DosSetFSInfo
526: */
527:
528: /* FS Drive Info Levels */
529: #define FSIL_ALLOC 1 /* Drive allocation info (Query only) */
530: #define FSIL_VOLSER 2 /* Drive Volume/Serial information */
531:
532: /* DosQueryFHType() */
533: /* Handle classes (low 8 bits of Handle Type) */
534: #define FHT_DISKFILE 0x0000 /* Disk file handle */
535: #define FHT_CHRDEV 0x0001 /* Character device handle */
536: #define FHT_PIPE 0x0002 /* Pipe handle */
537:
538: /* Handle bits (high 8 bits of Handle Type) */
539: #define FHB_DSKREMOTE 0x8000 /* Remote disk */
540: #define FHB_CHRDEVREMOTE 0x8000 /* Remote character device */
541: #define FHB_PIPEREMOTE 0x8000 /* Remote pipe */
542:
543:
544: typedef SHANDLE HFILE; /* hf */
545: typedef HFILE FAR *PHFILE;
546:
547: #ifndef INCL_SAADEFS
548:
549: /* File time and date types */
550:
551: typedef struct _FTIME { /* ftime */
552: USHORT twosecs : 5;
553: USHORT minutes : 6;
554: USHORT hours : 5;
555: } FTIME;
556: typedef FTIME FAR *PFTIME;
557:
558: typedef struct _FDATE { /* fdate */
559: USHORT day : 5;
560: USHORT month : 4;
561: USHORT year : 7;
562: } FDATE;
563: typedef FDATE FAR *PFDATE;
564:
565: typedef struct _FILEFINDBUF { /* findbuf */
566: FDATE fdateCreation;
567: FTIME ftimeCreation;
568: FDATE fdateLastAccess;
569: FTIME ftimeLastAccess;
570: FDATE fdateLastWrite;
571: FTIME ftimeLastWrite;
572: ULONG cbFile;
573: ULONG cbFileAlloc;
574: USHORT attrFile;
575: UCHAR cchName;
576: CHAR achName[CCHMAXPATHCOMP];
577: } FILEFINDBUF;
578: typedef FILEFINDBUF FAR *PFILEFINDBUF;
579:
580: typedef struct _FILEFINDBUF2 { /* findbuf2 */
581: FDATE fdateCreation;
582: FTIME ftimeCreation;
583: FDATE fdateLastAccess;
584: FTIME ftimeLastAccess;
585: FDATE fdateLastWrite;
586: FTIME ftimeLastWrite;
587: ULONG cbFile;
588: ULONG cbFileAlloc;
589: USHORT attrFile;
590: ULONG cbList;
591: UCHAR cchName;
592: CHAR achName[CCHMAXPATHCOMP];
593: } FILEFINDBUF2;
594: typedef FILEFINDBUF2 FAR *PFILEFINDBUF2;
595:
596: /* extended attribute structures */
597: typedef struct _GEA { /* gea */
598: BYTE cbName; /* name length not including NULL */
599: CHAR szName[1]; /* attribute name */
600: } GEA;
601: typedef GEA FAR *PGEA;
602:
603: typedef struct _GEALIST { /* geal */
604: ULONG cbList; /* total bytes of structure inc full list */
605: GEA list[1]; /* variable length GEA structures */
606: } GEALIST;
607: typedef GEALIST FAR * PGEALIST;
608:
609: typedef struct _FEA { /* fea */
610: BYTE fEA; /* flags */
611: BYTE cbName; /* name length not including NULL */
612: USHORT cbValue; /* value length */
613: } FEA;
614: typedef FEA FAR *PFEA;
615:
616: /* flags for _FEA.fEA */
617:
618: #define FEA_NEEDEA 0x80 /* need EA bit */
619:
620: typedef struct _FEALIST { /* feal */
621: ULONG cbList; /* total bytes of structure inc full list */
622: FEA list[1]; /* variable length FEA structures */
623: } FEALIST;
624: typedef FEALIST FAR * PFEALIST;
625:
626: typedef struct _EAOP { /* eaop */
627: PGEALIST fpGEAList; /* general EA list */
628: PFEALIST fpFEAList; /* full EA list */
629: ULONG oError;
630: } EAOP;
631: typedef EAOP FAR * PEAOP;
632:
633:
634: /*
635: * Equates for EA types
636: *
637: * Values 0xFFFE thru 0x8000 are reserved.
638: * Values 0x0000 thru 0x7fff are user definable.
639: * Value 0xFFFC is not used
640: */
641:
642: #define EAT_BINARY 0xFFFE /* length preceeded binary */
643: #define EAT_ASCII 0xFFFD /* length preceeded ASCII */
644: #define EAT_BITMAP 0xFFFB /* length preceeded bitmap */
645: #define EAT_METAFILE 0xFFFA /* length preceeded metafile */
646: #define EAT_ICON 0xFFF9 /* length preceeded icon */
647: #define EAT_EA 0xFFEE /* length preceeded ASCII extended attribute */
648: /* name of associated data (#include)*/
649: #define EAT_MVMT 0xFFDF /* multi-valued, multi-typed field */
650: #define EAT_MVST 0xFFDE /* multi-valued, single-typed field */
651: #define EAT_ASN1 0xFFDD /* ASN.1 field */
652:
653:
654: #endif /* !INCL_SAADEFS */
655:
656: /* XLATOFF */
657: #ifndef INCL_NOXLATE_DOS16
658: #define DosBufReset Dos16BufReset
659: #define DosChDir Dos16ChDir
660: #define DosChgFilePtr Dos16ChgFilePtr
661: #define DosClose Dos16Close
662: #define DosCopy Dos16Copy
663: #define DosDelete Dos16Delete
664: #define DosDupHandle Dos16DupHandle
665: #define DosEditName Dos16EditName
666: #define DosEnumAttribute Dos16EnumAttribute
667: #define DosFileIO Dos16FileIO
668: #define DosFileLocks Dos16FileLocks
669: #define DosFindClose Dos16FindClose
670: #define DosFindFirst Dos16FindFirst
671: #define DosFindFirst2 Dos16FindFirst2
672: #define DosFindNext Dos16FindNext
673: #define DosFindNotifyClose Dos16FindNotifyClose
674: #define DosFindNotifyFirst Dos16FindNotifyFirst
675: #define DosFindNotifyNext Dos16FindNotifyNext
676: #define DosFSAttach Dos16FSAttach
677: #define DosFSCtl Dos16FSCtl
678: #define DosMkDir Dos16MkDir
679: #define DosMkDir2 Dos16MkDir2
680: #define DosMove Dos16Move
681: #define DosNewSize Dos16NewSize
682: #define DosOpen Dos16Open
683: #define DosOpen2 Dos16Open2
684: #define DosQCurDir Dos16QCurDir
685: #define DosQCurDisk Dos16QCurDisk
686: #define DosQFHandState Dos16QFHandState
687: #define DosQFileInfo Dos16QFileInfo
688: #define DosQFileMode Dos16QFileMode
689: #define DosQFSAttach Dos16QFSAttach
690: #define DosQFSInfo Dos16QFSInfo
691: #define DosQHandType Dos16QHandType
692: #define DosQPathInfo Dos16QPathInfo
693: #define DosQVerify Dos16QVerify
694: #define DosRead Dos16Read
695: #define DosReadAsync Dos16ReadAsync
696: #define DosRmDir Dos16RmDir
697: #define DosSelectDisk Dos16SelectDisk
698: #define DosSetFHandState Dos16SetFHandState
699: #define DosSetFileInfo Dos16SetFileInfo
700: #define DosSetFileMode Dos16SetFileMode
701: #define DosSetFilePtr Dos16SetFilePtr
702: #define DosSetFSInfo Dos16SetFSInfo
703: #define DosSetMaxFH Dos16SetMaxFH
704: #define DosSetPathInfo Dos16SetPathInfo
705: #define DosSetVerify Dos16SetVerify
706: #define DosShutdown Dos16Shutdown
707: #define DosWrite Dos16Write
708: #define DosWriteAsync Dos16WriteAsync
709: #endif /* INCL_NOXLATE_DOS16 */
710: /* XLATON */
711:
712: APIRET APIENTRY DosOpen(PSZ pszFname, PHFILE phfOpen, PUSHORT pusAction,
713: ULONG ulFSize, USHORT usAttr, USHORT fsOpenFlags,
714: USHORT fsOpenMode, ULONG ulReserved);
715: APIRET APIENTRY DosOpen2(PSZ pszFname, PHFILE phf, PUSHORT pusAction,
716: ULONG ulFSize, USHORT usAttr, USHORT usOpenFlags,
717: ULONG usOpenMode, PEAOP pvEABuf, ULONG ulReserved);
718: APIRET APIENTRY DosClose(HFILE hf);
719: APIRET APIENTRY DosRead(HFILE hf, PVOID pBuf, USHORT cbBuf,
720: PUSHORT pcbBytesRead);
721: APIRET APIENTRY DosWrite(HFILE hf, PVOID bBuf, USHORT cbBuf,
722: PUSHORT pcbBytesWritten);
723:
724: /* File system shutdown */
725:
726: APIRET APIENTRY DosShutdown(ULONG ulReserved);
727:
728: /* File time and date types */
729:
730: typedef struct _FILESTATUS { /* fsts */
731: FDATE fdateCreation;
732: FTIME ftimeCreation;
733: FDATE fdateLastAccess;
734: FTIME ftimeLastAccess;
735: FDATE fdateLastWrite;
736: FTIME ftimeLastWrite;
737: ULONG cbFile;
738: ULONG cbFileAlloc;
739: USHORT attrFile;
740: } FILESTATUS;
741: typedef FILESTATUS FAR *PFILESTATUS;
742:
743: typedef struct _FILESTATUS2 { /* fsts2 */
744: FDATE fdateCreation;
745: FTIME ftimeCreation;
746: FDATE fdateLastAccess;
747: FTIME ftimeLastAccess;
748: FDATE fdateLastWrite;
749: FTIME ftimeLastWrite;
750: ULONG cbFile;
751: ULONG cbFileAlloc;
752: USHORT attrFile;
753: ULONG cbList;
754: } FILESTATUS2;
755: typedef FILESTATUS2 FAR *PFILESTATUS2;
756:
757: typedef struct _FSALLOCATE { /* fsalloc */
758: ULONG idFileSystem;
759: ULONG cSectorUnit;
760: ULONG cUnit;
761: ULONG cUnitAvail;
762: USHORT cbSector;
763: } FSALLOCATE;
764: typedef FSALLOCATE FAR *PFSALLOCATE;
765:
766: typedef struct _VOLUMELABEL { /* vol */
767: BYTE cch;
768: CHAR szVolLabel[12];
769: } VOLUMELABEL;
770: typedef VOLUMELABEL FAR *PVOLUMELABEL;
771:
772: typedef struct _FSINFO { /* fsinf */
773: FDATE fdateCreation;
774: FTIME ftimeCreation;
775: VOLUMELABEL vol;
776: } FSINFO;
777: typedef FSINFO FAR *PFSINFO;
778:
779: /* HANDTYPE values */
780:
781: #define HANDTYPE_FILE 0x0000
782: #define HANDTYPE_DEVICE 0x0001
783: #define HANDTYPE_PIPE 0x0002
784: #define HANDTYPE_NETWORK 0x8000
785:
786: typedef struct _FILELOCK { /* flock */
787: LONG lOffset;
788: LONG lRange;
789: } FILELOCK;
790: typedef FILELOCK FAR *PFILELOCK;
791:
792: typedef SHANDLE HDIR; /* hdir */
793: typedef HDIR FAR *PHDIR;
794:
795: APIRET APIENTRY DosDelete(PSZ pszFName, ULONG ulReserverd);
796: APIRET APIENTRY DosDupHandle(HFILE hfOld, PHFILE phfNew);
797:
798: APIRET APIENTRY DosQFHandState(HFILE hf, PUSHORT pfsOpenMode);
799: APIRET APIENTRY DosSetFHandState(HFILE hf, USHORT fsState);
800: APIRET APIENTRY DosQHandType(HFILE hf, PUSHORT pfsType, PUSHORT pusDevAttr);
801:
802: APIRET APIENTRY DosReadAsync (HFILE hf, PULONG hsemRam, PUSHORT pusErrCode,
803: PVOID pBuf, USHORT cbBuf, PUSHORT pcbBytesRead);
804: APIRET APIENTRY DosWriteAsync(HFILE hf, PULONG hsemRam, PUSHORT pusErrCode,
805: PVOID pBuf, USHORT cbBuf, PUSHORT pcbBytesWritten);
806:
807: APIRET APIENTRY DosFindFirst(PSZ pszFSpec, PHDIR phdir, USHORT usAttr,
808: PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch,
809: ULONG ulReserved);
810: APIRET APIENTRY DosFindFirst2(PSZ pszFSpec, PHDIR phdir, USHORT usAttr,
811: PVOID pBuf, USHORT cbBuf, PUSHORT pcSearch,
812: USHORT usInfoLevel, ULONG ulReserved);
813: APIRET APIENTRY DosFindNext(HDIR hdir, PFILEFINDBUF pffb, USHORT cbBuf,
814: PUSHORT pcSearch);
815: APIRET APIENTRY DosFindClose(HDIR hdir);
816: APIRET APIENTRY DosFindNotifyFirst(PSZ pszPath, PHDIR hdir, USHORT usAttr,
817: PVOID pBuf, USHORT cbBuf, PUSHORT pcChg,
818: USHORT usInfoLevel, ULONG ulTimeOut,
819: ULONG ulReserved);
820: APIRET APIENTRY DosFindNotifyNext(HDIR hDir, PVOID pBuf, USHORT cbBuf,
821: PUSHORT pcChg, ULONG ulTimeOut);
822: APIRET APIENTRY DosFindNotifyClose(HDIR hDir);
823:
824: APIRET APIENTRY DosFSAttach(PSZ pszDevName, PSZ pszFSD, PVOID pData,
825: USHORT cbData, USHORT fsOp, ULONG ulReserved);
826: APIRET APIENTRY DosQFSAttach(PSZ pszDev, USHORT usOrdinal, USHORT usInfoLevel,
827: PVOID pFSAttBuf, PUSHORT cbBuf, ULONG ulReserved);
828: APIRET APIENTRY DosFSCtl(PVOID pData, USHORT cbData, PUSHORT pcbData,
829: PVOID pParms, USHORT cbParms, PUSHORT pcbParms,
830: USHORT usFunCode, PSZ pszRoute, HFILE hf,
831: USHORT usRouteMethod, ULONG ulReserved);
832:
833: APIRET APIENTRY DosNewSize(HFILE hf, ULONG ulNewSize);
834: APIRET APIENTRY DosBufReset(HFILE hf);
835:
836: APIRET APIENTRY DosChgFilePtr(HFILE hf, LONG lOffset, USHORT fsMethod,
837: PULONG pulNewOffset);
838:
839: APIRET APIENTRY DosSetFilePtr(HFILE hf, LONG lOffset, USHORT fsMethod,
840: PULONG pulNewOffset);
841:
842: APIRET APIENTRY DosFileLocks(HFILE hf, PLONG pUnlock, PLONG pLock);
843:
844: APIRET APIENTRY DosMove(PSZ pszOld, PSZ pszNew, ULONG ulReserved);
845: APIRET APIENTRY DosCopy(PSZ pszSrc, PSZ pszDst, USHORT usOpt, ULONG ulReserved);
846: APIRET APIENTRY DosEditName(USHORT usEditLevel, PSZ pszSrc, PSZ pszEdit,
847: PBYTE pszDst, USHORT cbDst);
848:
849: APIRET APIENTRY DosFileIO(HFILE hf, PVOID pbCmd, USHORT cbCmd, PUSHORT pusErr);
850: APIRET APIENTRY DosMkDir(PSZ pszDirName, ULONG usReserved);
851: APIRET APIENTRY DosMkDir2(PSZ pszDir, PEAOP pBuf, ULONG ulReserved);
852: APIRET APIENTRY DosRmDir(PSZ pszDir, ULONG ulReserved);
853: APIRET APIENTRY DosSelectDisk(USHORT usDrvNum);
854: APIRET APIENTRY DosQCurDisk(PUSHORT pusDrvNum, PULONG pulLogDrvMap);
855:
856: APIRET APIENTRY DosChDir(PSZ pszDir, ULONG ulReserved);
857: APIRET APIENTRY DosQCurDir(USHORT usDrvNum, PBYTE pszPathBuf,
858: PUSHORT pcbPathBuf);
859:
860: APIRET APIENTRY DosQFSInfo(USHORT usDrvNum, USHORT usInfoLevel, PVOID pbInfo,
861: USHORT cbInfo);
862: APIRET APIENTRY DosSetFSInfo(USHORT usDrvNum, USHORT usInfoLevel, PVOID pBuf,
863: USHORT cbBuf);
864: APIRET APIENTRY DosQVerify(PUSHORT pfVerifyOn);
865: APIRET APIENTRY DosSetVerify(USHORT fVerify);
866: APIRET APIENTRY DosSetMaxFH(USHORT usHandles);
867:
868: APIRET APIENTRY DosQFileInfo(HFILE hf, USHORT usInfoLevel, PVOID pInfoBuf,
869: USHORT cbInfoBuf);
870: APIRET APIENTRY DosSetFileInfo(HFILE hf, USHORT usInfoLevel, PVOID pInfoBuf,
871: USHORT cbInfoBuf);
872: APIRET APIENTRY DosQPathInfo(PSZ pszPath, USHORT usInfoLevel, PVOID pInfoBuf,
873: USHORT cbInfoBuf, ULONG ulReserved);
874: APIRET APIENTRY DosSetPathInfo(PSZ pszPath, USHORT usInfoLevel, PVOID pInfoBuf,
875: USHORT cbInfoBuf, USHORT usFlags,
876: ULONG ulReserved);
877:
878: /* defines for dossetpathinfo -pathinfo flag */
879: #define DSPI_WRTTHRU 0x10 /* write through */
880:
881: APIRET APIENTRY DosQFileMode(PSZ pszFName, PUSHORT pusAttr, ULONG ulReserved);
882: APIRET APIENTRY DosSetFileMode(PSZ pszFName, USHORT usAttr, ULONG ulReserved);
883:
884: APIRET APIENTRY DosEnumAttribute(USHORT fRefType, PVOID pFileRef, ULONG iStartEntry, PVOID pEnumBuf, ULONG cbBuf, PULONG pcbActual, ULONG infoLevel, ULONG reserved);
885:
886: typedef struct _DENA1 { /* _dena1 level 1 info returned from DosEnumAttribute */
887: UCHAR reserved; /* 0 */
888: UCHAR cbName; /* length of name exculding NULL */
889: USHORT cbValue; /* length of value */
890: UCHAR szName[1]; /* variable length asciiz name */
891: } DENA1;
892: typedef DENA1 FAR *PDENA1;
893:
894: /* Infolevels for DosEnumAttribute */
895: #define ENUMEA_LEVEL_NO_VALUE 1L /* FEA without value */
896: /* Reference types for DosEnumAttribute */
897: #define ENUMEA_REFTYPE_FHANDLE 0 /* file handle */
898: #define ENUMEA_REFTYPE_PATH 1 /* path name */
899: #define ENUMEA_REFTYPE_MAX ENUMEA_REFTYPE_PATH
900:
901: #endif /* common INCL_DOSFILEMGR */
902:
903: #if (defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON))
904: /*** Memory management */
905:
906: /* XLATOFF */
907: #ifndef INCL_NOXLATE_DOS16
908: #define DosAllocSeg Dos16AllocSeg
909: #define DosFreeSeg Dos16FreeSeg
910: #define DosGetSeg Dos16GetSeg
911: #define DosGiveSeg Dos16GiveSeg
912: #define DosReallocSeg Dos16ReallocSeg
913: #define DosSizeSeg Dos16SizeSeg
914: #endif /* INCL_NOXLATE_DOS16 */
915: /* XLATON */
916:
917:
918: APIRET APIENTRY DosAllocSeg(USHORT cbSize, PSEL pSel, USHORT fsAlloc);
919: APIRET APIENTRY DosFreeSeg(SEL sel);
920: APIRET APIENTRY DosGetSeg(SEL sel);
921: APIRET APIENTRY DosGiveSeg(SEL sel, PID pid, PSEL pSelRecipient);
922: APIRET APIENTRY DosReallocSeg(USHORT cbNewSize, SEL sel);
923: APIRET APIENTRY DosSizeSeg(SEL sel, PULONG pcbSize);
924:
925: /* Segment attribute flags (used with DosAllocSeg) */
926:
927: #define SEG_NONSHARED 0x0000
928: #define SEG_GIVEABLE 0x0001
929: #define SEG_GETTABLE 0x0002
930: #define SEG_DISCARDABLE 0x0004
931:
932: #endif /* common INCL_DOSMEMMGR */
933:
934: #ifdef INCL_DOSMEMMGR
935:
936: /* XLATOFF */
937: #ifndef INCL_NOXLATE_DOS16
938: #define DosAllocHuge Dos16AllocHuge
939: #define DosAllocShrSeg Dos16AllocShrSeg
940: #define DosCreateCSAlias Dos16CreateCSAlias
941: #define DosGetHugeShift Dos16GetHugeShift
942: #define DosGetShrSeg Dos16GetShrSeg
943: #define DosLockSeg Dos16LockSeg
944: #define DosMemAvail Dos16MemAvail
945: #define DosReallocHuge Dos16ReallocHuge
946: #define DosSubAlloc Dos16SubAlloc
947: #define DosSubFree Dos16SubFree
948: #define DosSubSet Dos16SubSet
949: #define DosUnlockSeg Dos16UnlockSeg
950: #endif /* INCL_NOXLATE_DOS16 */
951: /* XLATON */
952:
953: APIRET APIENTRY DosAllocHuge(USHORT cSegs, USHORT cbPartialSeg, PSEL psel,
954: USHORT cMaxSegs, USHORT fsAlloc);
955: APIRET APIENTRY DosReallocHuge(USHORT cSegs, USHORT cbPartialSeg, SEL sel);
956: APIRET APIENTRY DosGetHugeShift(PUSHORT pusShiftCount);
957:
958: APIRET APIENTRY DosAllocShrSeg(USHORT cbSeg, PSZ pszSegName, PSEL psel);
959:
960: APIRET APIENTRY DosLockSeg(SEL sel);
961: APIRET APIENTRY DosUnlockSeg(SEL sel);
962:
963: APIRET APIENTRY DosGetShrSeg(PSZ pszSegName, PSEL psel);
964:
965: APIRET APIENTRY DosMemAvail(PULONG pcbFree);
966: APIRET APIENTRY DosCreateCSAlias(SEL selDS, PSEL pselCS);
967:
968: APIRET APIENTRY DosSubAlloc(SEL sel, PUSHORT pusOffset, USHORT cb);
969: APIRET APIENTRY DosSubFree(SEL sel, USHORT offBlock, USHORT cb);
970: APIRET APIENTRY DosSubSet(SEL sel, USHORT fFlags, USHORT cbNew);
971:
972: #endif /* INCL_DOSMEMMGR */
973:
974: #if (defined(INCL_DOSSEMAPHORES) || !defined(INCL_NOCOMMON))
975:
976: /*** Semaphore support */
977:
978: #define SEM_INDEFINITE_WAIT -1L
979: #define SEM_IMMEDIATE_RETURN 0L
980:
981: /* XLATOFF */
982: #ifndef INCL_NOXLATE_DOS16
983: #define DosSemClear Dos16SemClear
984: #define DosSemRequest Dos16SemRequest
985: #define DosSemSet Dos16SemSet
986: #define DosSemSetWait Dos16SemSetWait
987: #define DosSemWait Dos16SemWait
988: #endif /* INCL_NOXLATE_DOS16 */
989: /* XLATON */
990:
991: APIRET APIENTRY DosSemClear(HSEM hsem);
992: APIRET APIENTRY DosSemSet(HSEM hsem);
993: APIRET APIENTRY DosSemWait(HSEM hsem, LONG lTimeOut);
994: APIRET APIENTRY DosSemSetWait(HSEM hsem, LONG lTimeOut);
995: APIRET APIENTRY DosSemRequest(HSEM hsem, LONG lTimeOut);
996:
997: #endif /* common INCL_DOSSEMAPHORES */
998:
999: #ifdef INCL_DOSSEMAPHORES
1000:
1001: typedef LHANDLE HSYSSEM; /* hssm */
1002: typedef HSYSSEM FAR *PHSYSSEM;
1003:
1004: #define CSEM_PRIVATE 0
1005: #define CSEM_PUBLIC 1
1006:
1007: /* XLATOFF */
1008: #ifndef INCL_NOXLATE_DOS16
1009: #define DosCloseSem Dos16CloseSem
1010: #define DosCreateSem Dos16CreateSem
1011: #define DosFSRamSemClear Dos16FSRamSemClear
1012: #define DosFSRamSemRequest Dos16FSRamSemRequest
1013: #define DosMuxSemWait Dos16MuxSemWait
1014: #define DosOpenSem Dos16OpenSem
1015: #endif /* INCL_NOXLATE_DOS16 */
1016: /* XLATON */
1017:
1018: APIRET APIENTRY DosCreateSem(USHORT fExclusive,PHSYSSEM phsem,PSZ pszSemName);
1019: APIRET APIENTRY DosOpenSem(PHSEM phsem, PSZ pszSemName);
1020: APIRET APIENTRY DosCloseSem(HSEM hsem);
1021:
1022: typedef struct _MUXSEM { /* mxs */
1023: USHORT zero;
1024: HSEM hsem;
1025: } MUXSEM;
1026: typedef MUXSEM FAR *PMUXSEM;
1027:
1028: typedef struct _MUXSEMLIST { /* mxsl */
1029: USHORT cmxs;
1030: MUXSEM amxs[16];
1031: } MUXSEMLIST;
1032: typedef MUXSEMLIST FAR *PMUXSEMLIST;
1033:
1034: /*
1035: * Since a MUXSEMLIST structure is actually a variable length
1036: * structure, the following macro may be used to define a MUXSEMLIST
1037: * structure having size elements, named "name".
1038: */
1039: #define DEFINEMUXSEMLIST(name, size) \
1040: struct { \
1041: USHORT cmxs; \
1042: MUXSEM amxs[size]; \
1043: } name;
1044:
1045: /*
1046: * This function actually takes a far pointer to a MUXSEMLIST structure
1047: * as its second parameter, but in order to allow its use with the
1048: * DEFINEMUXSEMLIST macro, it is declared here as PVOID.
1049: */
1050: APIRET APIENTRY DosMuxSemWait(PUSHORT pisemCleared,PVOID pmsxl,LONG lTimeOut);
1051:
1052:
1053: /*** Fast safe ram semaphores */
1054:
1055: typedef struct _DOSFSRSEM { /* dosfsrs */
1056: USHORT cb;
1057: PID pid;
1058: TID tid;
1059: USHORT cUsage;
1060: USHORT client;
1061: ULONG sem;
1062: } DOSFSRSEM;
1063: typedef DOSFSRSEM FAR *PDOSFSRSEM;
1064:
1065: APIRET APIENTRY DosFSRamSemRequest(PDOSFSRSEM pdosfsrs, LONG lTimeOut);
1066: APIRET APIENTRY DosFSRamSemClear(PDOSFSRSEM pdosfsrs);
1067:
1068: #endif /* INCL_DOSSEMAPHORES */
1069:
1070: #if (defined(INCL_DOSDATETIME) || !defined(INCL_NOCOMMON))
1071:
1072: /*** Time support */
1073:
1074: typedef struct _DATETIME { /* date */
1075: UCHAR hours;
1076: UCHAR minutes;
1077: UCHAR seconds;
1078: UCHAR hundredths;
1079: UCHAR day;
1080: UCHAR month;
1081: USHORT year;
1082: SHORT timezone;
1083: UCHAR weekday;
1084: } DATETIME;
1085: typedef DATETIME FAR *PDATETIME;
1086:
1087: /* XLATOFF */
1088: #ifndef INCL_NOXLATE_DOS16
1089: #define DosGetDateTime Dos16GetDateTime
1090: #define DosSetDateTime Dos16SetDateTime
1091: #endif /* INCL_NOXLATE_DOS16 */
1092: /* XLATON */
1093:
1094: APIRET APIENTRY DosGetDateTime(PDATETIME pdatetime);
1095: APIRET APIENTRY DosSetDateTime(PDATETIME pdatetime);
1096:
1097: #endif /* common INCL_DOSDATETIME */
1098:
1099: #ifdef INCL_DOSDATETIME
1100:
1101: typedef SHANDLE HTIMER;
1102: typedef HTIMER FAR *PHTIMER;
1103:
1104: /* XLATOFF */
1105: #ifndef INCL_NOXLATE_DOS16
1106: #define DosTimerAsync Dos16TimerAsync
1107: #define DosTimerStart Dos16TimerStart
1108: #define DosTimerStop Dos16TimerStop
1109: #endif /* INCL_NOXLATE_DOS16 */
1110: /* XLATON */
1111:
1112: APIRET APIENTRY DosTimerAsync(ULONG ulTime, HSEM hsem, PHTIMER phtimer);
1113: APIRET APIENTRY DosTimerStart(ULONG ulTime, HSEM hsem, PHTIMER phtimer);
1114: APIRET APIENTRY DosTimerStop(HTIMER htimer);
1115:
1116: #endif /* INCL_DOSDATETIME */
1117:
1118:
1119: /*** Module manager */
1120:
1121: #ifdef INCL_DOSMODULEMGR
1122:
1123: /* XLATOFF */
1124: #ifndef INCL_NOXLATE_DOS16
1125: #define DosFreeModule Dos16FreeModule
1126: #define DosGetModHandle Dos16GetModHandle
1127: #define DosGetModName Dos16GetModName
1128: #define DosGetProcAddr Dos16GetProcAddr
1129: #define DosLoadModule Dos16LoadModule
1130: #define DosQueryProcType Dos16QueryProcType
1131: #endif /* INCL_NOXLATE_DOS16 */
1132: /* XLATON */
1133:
1134: APIRET APIENTRY DosLoadModule(PSZ pszFailName, USHORT cbFileName,
1135: PSZ pszModName, PHMODULE phmod);
1136: APIRET APIENTRY DosFreeModule(HMODULE hmod);
1137: APIRET APIENTRY DosGetProcAddr(HMODULE hmod, PSZ pszProcName,
1138: PFN FAR * ppfnProcAddr);
1139: APIRET APIENTRY DosGetModHandle(PSZ pszModName, PHMODULE phMod);
1140: APIRET APIENTRY DosGetModName(HMODULE hmod, USHORT cbBuf, PCHAR pchBuf);
1141:
1142: #define PT_16BIT 0L
1143: #define PT_32BIT 1L
1144:
1145: APIRET APIENTRY DosQueryProcType(HMODULE hmod, ULONG ordinal, PSZ pszName, PULONG pulprocType);
1146:
1147: APIRET APIENTRY DosInitializePorthole(ULONG pfmLibInit, ULONG lenttype);
1148:
1149: typedef struct _MODHDR { /* Module Header Info */
1150: USHORT flags;
1151: USHORT flagsothers;
1152: USHORT exetype;
1153: USHORT expver;
1154: USHORT cbrsrc;
1155: } MODHDR;
1156: typedef MODHDR *PMODHDR;
1157:
1158: #define HEADER_EXEINFO 1L
1159: #define HEADER_READRSRCTBL 2L
1160: #define HEADER_READSECTOR 3L
1161:
1162: APIRET APIENTRY DosQueryHeaderInfo(HMODULE hmod, ULONG i, VOID FAR *pbuf, ULONG cb, ULONG subfunc);
1163:
1164: #endif /* INCL_DOSMODULEMGR */
1165:
1166: #if (defined(INCL_DOSRESOURCES) || !defined(INCL_NOCOMMON))
1167:
1168: /*** Resource support */
1169:
1170: /* Predefined resource types */
1171:
1172: #define RT_POINTER 1 /* mouse pointer shape */
1173: #define RT_BITMAP 2 /* bitmap */
1174: #define RT_MENU 3 /* menu template */
1175: #define RT_DIALOG 4 /* dialog template */
1176: #define RT_STRING 5 /* string tables */
1177: #define RT_FONTDIR 6 /* font directory */
1178: #define RT_FONT 7 /* font */
1179: #define RT_ACCELTABLE 8 /* accelerator tables */
1180: #define RT_RCDATA 9 /* binary data */
1181: #define RT_MESSAGE 10 /* error mesage tables */
1182: #define RT_DLGINCLUDE 11 /* dialog include file name */
1183: #define RT_VKEYTBL 12 /* key to vkey tables */
1184: #define RT_KEYTBL 13 /* key to UGL tables */
1185: #define RT_CHARTBL 14
1186: #define RT_DISPLAYINFO 15 /* screen display information */
1187:
1188: #define RT_FKASHORT 16 /* function key area short form */
1189: #define RT_FKALONG 17 /* function key area long form */
1190:
1191: #define RT_HELPTABLE 18 /* Help table for Cary Help manager */
1192: #define RT_HELPSUBTABLE 19 /* Help subtable for Cary Help manager */
1193:
1194: #define RT_FDDIR 20 /* DBCS uniq/font driver directory */
1195: #define RT_FD 21 /* DBCS uniq/font driver */
1196:
1197: #define RT_MAX 22 /* 1st unused Resource Type */
1198:
1199:
1200: #endif /* common INCL_DOSRESOURCES */
1201:
1202: #ifdef INCL_DOSRESOURCES
1203:
1204: /* XLATOFF */
1205: #ifndef INCL_NOXLATE_DOS16
1206: #define DosFreeResource Dos16FreeResource
1207: #define DosGetResource Dos16GetResource
1208: #define DosGetResource2 Dos16GetResource2
1209: #define DosQueryResourceSize Dos16QueryResourceSize
1210: #endif /* INCL_NOXLATE_DOS16 */
1211: /* XLATON */
1212:
1213: APIRET APIENTRY DosGetResource(HMODULE hmod, USHORT idType, USHORT idName,
1214: PSEL psel);
1215: APIRET APIENTRY DosGetResource2(HMODULE hmod, USHORT idType, USHORT idName,
1216: PVOID FAR * ppData);
1217: APIRET APIENTRY DosFreeResource(PVOID pData);
1218: APIRET APIENTRY DosQueryResourceSize(HMODULE hmod, ULONG idt, ULONG idn,
1219: PULONG pulsize);
1220:
1221: #endif /* INCL_DOSRESOURCES */
1222:
1223:
1224: /*** NLS Support */
1225:
1226: #ifdef INCL_DOSNLS
1227:
1228: typedef struct _COUNTRYCODE { /* ctryc */
1229: USHORT country;
1230: USHORT codepage;
1231: } COUNTRYCODE;
1232: typedef COUNTRYCODE FAR *PCOUNTRYCODE;
1233:
1234: typedef struct _COUNTRYINFO { /* ctryi */
1235: USHORT country;
1236: USHORT codepage;
1237: USHORT fsDateFmt;
1238: CHAR szCurrency[5];
1239: CHAR szThousandsSeparator[2];
1240: CHAR szDecimal[2];
1241: CHAR szDateSeparator[2];
1242: CHAR szTimeSeparator[2];
1243: UCHAR fsCurrencyFmt;
1244: UCHAR cDecimalPlace;
1245: UCHAR fsTimeFmt;
1246: USHORT abReserved1[2];
1247: CHAR szDataSeparator[2];
1248: USHORT abReserved2[5];
1249: } COUNTRYINFO;
1250: typedef COUNTRYINFO FAR *PCOUNTRYINFO;
1251:
1252: /* XLATOFF */
1253: #ifndef INCL_NOXLATE_DOS16
1254: #define DosCaseMap Dos16CaseMap
1255: #define DosGetCollate Dos16GetCollate
1256: #define DosGetCp Dos16GetCp
1257: #define DosGetCtryInfo Dos16GetCtryInfo
1258: #define DosGetDBCSEv Dos16GetDBCSEv
1259: #define DosSetCp Dos16SetCp
1260: #define DosSetProcCp Dos16SetProcCp
1261: #endif /* INCL_NOXLATE_DOS16 */
1262: /* XLATON */
1263:
1264: APIRET APIENTRY DosGetCtryInfo(USHORT cbBuf, PCOUNTRYCODE pctryc,
1265: PCOUNTRYINFO pctryi, PUSHORT pcbCtryInfo);
1266: APIRET APIENTRY DosGetDBCSEv(USHORT cbBuf, PCOUNTRYCODE pctryc, PCHAR pchBuf);
1267: APIRET APIENTRY DosCaseMap(USHORT usLen, PCOUNTRYCODE pctryc, PCHAR pchStr);
1268: APIRET APIENTRY DosGetCollate(USHORT cbBuf, PCOUNTRYCODE pctryc, PCHAR pchBuf,
1269: PUSHORT pcbTable);
1270: APIRET APIENTRY DosGetCp(USHORT cbBuf, PUSHORT pBuf, PUSHORT pcbCodePgLst);
1271: APIRET APIENTRY DosSetCp(USHORT usCodePage, USHORT usReserved);
1272: APIRET APIENTRY DosSetProcCp(USHORT usCodePage, USHORT usReserved);
1273:
1274: #endif /* INCL_DOSNLS */
1275:
1276:
1277: /*** Signal support */
1278:
1279: #ifdef INCL_DOSSIGNALS
1280:
1281: /* Signal Numbers for DosSetSigHandler */
1282:
1283: #define SIG_CTRLC 1 /* Control C */
1284: #define SIG_BROKENPIPE 2 /* Broken Pipe */
1285: #define SIG_KILLPROCESS 3 /* Program Termination */
1286: #define SIG_CTRLBREAK 4 /* Control Break */
1287: #define SIG_PFLG_A 5 /* Process Flag A */
1288: #define SIG_PFLG_B 6 /* Process Flag B */
1289: #define SIG_PFLG_C 7 /* Process Flag C */
1290: #define SIG_CSIGNALS 8 /* number of signals plus one */
1291:
1292: /* Flag Numbers for DosFlagProcess */
1293:
1294: #define PFLG_A 0 /* Process Flag A */
1295: #define PFLG_B 1 /* Process Flag B */
1296: #define PFLG_C 2 /* Process Flag C */
1297:
1298: /* Signal actions */
1299:
1300: #define SIGA_KILL 0
1301: #define SIGA_IGNORE 1
1302: #define SIGA_ACCEPT 2
1303: #define SIGA_ERROR 3
1304: #define SIGA_ACKNOWLEDGE 4
1305:
1306: /* DosHoldSignal constants */
1307:
1308: #define HLDSIG_ENABLE 0
1309: #define HLDSIG_DISABLE 1
1310:
1311: /* DosFlagProcess codes */
1312:
1313: #define FLGP_SUBTREE 0
1314: #define FLGP_PID 1
1315:
1316: typedef VOID (PASCAL FAR *PFNSIGHANDLER)(USHORT, USHORT);
1317:
1318: /* XLATOFF */
1319: #ifndef INCL_NOXLATE_DOS16
1320: #define DosFlagProcess Dos16FlagProcess
1321: #define DosHoldSignal Dos16HoldSignal
1322: #define DosSendSignal Dos16SendSignal
1323: #define DosSetSigHandler Dos16SetSigHandler
1324: #endif /* INCL_NOXLATE_DOS16 */
1325: /* XLATON */
1326:
1327: APIRET APIENTRY DosSetSigHandler(PFNSIGHANDLER pfnSigHandler,
1328: PFNSIGHANDLER FAR * ppfnPrev, PUSHORT pfAction,
1329: USHORT fAction, USHORT usSigNum);
1330: APIRET APIENTRY DosFlagProcess(PID pid, USHORT fScope, USHORT usFlagNum,
1331: USHORT usFlagArg);
1332: APIRET APIENTRY DosHoldSignal(USHORT fDisable);
1333: APIRET APIENTRY DosSendSignal(USHORT idProcess, USHORT usSigNumber);
1334:
1335: #endif /* INCL_DOSSIGNALS */
1336:
1337:
1338: /*** Monitor support */
1339:
1340: #ifdef INCL_DOSMONITORS
1341:
1342: typedef SHANDLE HMONITOR; /* hmon */
1343: typedef HMONITOR FAR *PHMONITOR;
1344:
1345: /* XLATOFF */
1346: #ifndef INCL_NOXLATE_DOS16
1347: #define DosMonClose Dos16MonClose
1348: #define DosMonOpen Dos16MonOpen
1349: #define DosMonRead Dos16MonRead
1350: #define DosMonReg Dos16MonReg
1351: #define DosMonWrite Dos16MonWrite
1352: #endif /* INCL_NOXLATE_DOS16 */
1353: /* XLATON */
1354:
1355: APIRET APIENTRY DosMonOpen(PSZ pszDevName, PHMONITOR phmon);
1356: APIRET APIENTRY DosMonClose(HMONITOR hmon);
1357: APIRET APIENTRY DosMonReg(HMONITOR hmon, PBYTE pbInBuf, PBYTE pbOutBuf,
1358: USHORT fPosition, USHORT usIndex);
1359: APIRET APIENTRY DosMonRead(PBYTE pbInBuf, USHORT fWait, PBYTE pbDataBuf,
1360: PUSHORT pcbData);
1361: APIRET APIENTRY DosMonWrite(PBYTE pbOutBuf, PBYTE pbDataBuf, USHORT cbData);
1362:
1363: #endif /* INCL_DOSMONITORS */
1364:
1365:
1366: /*** Pipe and queue support */
1367:
1368: #ifdef INCL_DOSQUEUES
1369: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
1370:
1371: typedef SHANDLE HQUEUE; /* hq */
1372: typedef HQUEUE FAR *PHQUEUE;
1373:
1374: /* XLATOFF */
1375: #ifndef INCL_NOXLATE_DOS16
1376: #define DosCloseQueue Dos16CloseQueue
1377: #define DosCreateQueue Dos16CreateQueue
1378: #define DosMakePipe Dos16MakePipe
1379: #define DosOpenQueue Dos16OpenQueue
1380: #define DosPeekQueue Dos16PeekQueue
1381: #define DosPurgeQueue Dos16PurgeQueue
1382: #define DosQueryQueue Dos16QueryQueue
1383: #define DosReadQueue Dos16ReadQueue
1384: #define DosWriteQueue Dos16WriteQueue
1385: #endif /* INCL_NOXLATE_DOS16 */
1386: /* XLATON */
1387:
1388: APIRET APIENTRY DosMakePipe(PHFILE phfRead, PHFILE phfWrite, USHORT cb);
1389: APIRET APIENTRY DosCloseQueue(HQUEUE hqueue);
1390: APIRET APIENTRY DosCreateQueue(PHQUEUE phqueue, USHORT fQueueOrder,
1391: PSZ pszQueueName);
1392: APIRET APIENTRY DosOpenQueue(PUSHORT ppidOwner, PHQUEUE phqueue,
1393: PSZ pszQueueName);
1394: APIRET APIENTRY DosPeekQueue(HQUEUE hqueue, PULONG pqresc, PUSHORT pcbElement,
1395: PPVOID ppBuf, PUSHORT pElemCode, UCHAR fWait,
1396: PBYTE pbElemPrty, ULONG hsem);
1397: APIRET APIENTRY DosPurgeQueue(HQUEUE hqueue);
1398: APIRET APIENTRY DosQueryQueue(HQUEUE hqueue, PUSHORT pcElem);
1399: APIRET APIENTRY DosReadQueue(HQUEUE hqueue, PULONG pqresc, PUSHORT pcbElem,
1400: PPVOID ppBuf, USHORT usElem, UCHAR fWait,
1401: PBYTE pbElemPrty, HSEM hsem);
1402: APIRET APIENTRY DosWriteQueue(HQUEUE hqueue, USHORT usRequest, USHORT cbBuf,
1403: PVOID pBuf, UCHAR fPriority);
1404:
1405: #else /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
1406: #error PHFILE not defined - define INCL_DOSFILEMGR or undefine INCL_NOCOMMON
1407: #endif /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
1408: #endif /* INCL_DOSQUEUES */
1409:
1410: #ifdef INCL_DOSMISC
1411:
1412: /* definitions for DOSSEARCHPATH control word */
1413: #define DSP_IMPLIEDCUR 1 /* current dir will be searched first */
1414: #define DSP_PATHREF 2 /* from envirnoment variable */
1415: #define DSP_IGNORENETERR 4 /* ignore net errs & continue search */
1416:
1417: /* definition for DOSQSYSINFO */
1418: #define Q_MAX_PATH_LENGTH (0) /* index for query max path length */
1419:
1420: /* definitions for DosError - combine with | */
1421: #define FERR_DISABLEHARDERR 0x00000000L /* disable hard error popups */
1422: #define FERR_ENABLEHARDERR 0x00000001L /* enable hard error popups */
1423: #define FERR_ENABLEEXCEPTION 0x00000000L /* enable exception popups */
1424: #define FERR_DISABLEEXCEPTION 0x00000002L /* disable exception popups */
1425:
1426: /* XLATOFF */
1427: #ifndef INCL_NOXLATE_DOS16
1428: #define DosDynamicTrace Dos16DynamicTrace
1429: #define DosErrClass Dos16ErrClass
1430: #define DosError Dos16Error
1431: #define DosGetEnv Dos16GetEnv
1432: #define DosGetMachineMode Dos16GetMachineMode
1433: #define DosGetMessage Dos16GetMessage
1434: #define DosGetVersion Dos16GetVersion
1435: #define DosInsMessage Dos16InsMessage
1436: #define DosPutMessage Dos16PutMessage
1437: #define DosQSysInfo Dos16QSysInfo
1438: #define DosQueryMessageCP Dos16QueryMessageCP
1439: #define DosScanEnv Dos16ScanEnv
1440: #define DosSearchPath Dos16SearchPath
1441: #define DosSetVec Dos16SetVec
1442: #define DosSysTrace Dos16SysTrace
1443: #endif /* INCL_NOXLATE_DOS16 */
1444: /* XLATON */
1445:
1446: APIRET APIENTRY DosError(USHORT fEnable);
1447: APIRET APIENTRY DosSetVec(USHORT usVecNum, PFN pfnFun, PFN FAR *ppfnPrev);
1448: APIRET APIENTRY DosGetMessage(PCHAR FAR * ppchVTable, USHORT usVCount,
1449: PCHAR pchBuf, USHORT cbBuf, USHORT usMsgNum,
1450: PSZ pszFileName, PUSHORT pcbMsg);
1451: APIRET APIENTRY DosErrClass(USHORT usErrCode, PUSHORT pusClass,
1452: PUSHORT pfsAction, PUSHORT pusLocus);
1453: APIRET APIENTRY DosInsMessage(PCHAR FAR * ppchVTable, USHORT usVCount,
1454: PSZ pszMsg, USHORT cbMsg, PCHAR pchBuf,
1455: USHORT cbBuf, PUSHORT pcbMsg);
1456: APIRET APIENTRY DosPutMessage(USHORT hf, USHORT cbMsg, PCHAR pchMsg);
1457: APIRET APIENTRY DosQueryMessageCP(PCHAR pb, USHORT cb, PSZ pszFilename,
1458: PUSHORT cbBuf);
1459: APIRET APIENTRY DosSysTrace(USHORT, USHORT, USHORT, PCHAR);
1460: APIRET APIENTRY DosDynamicTrace(USHORT, PBYTE, PBYTE);
1461: APIRET APIENTRY DosQSysInfo(USHORT index, PVOID pBuf, USHORT cbBuf);
1462: APIRET APIENTRY DosGetEnv(PSEL pselEnv, PUSHORT pOffsetCmd);
1463: APIRET APIENTRY DosScanEnv(PSZ pszVarName, PSZ FAR * ppszResult);
1464: APIRET APIENTRY DosSearchPath(USHORT fsSearch, PSZ pszPath, PSZ pszFName,
1465: PBYTE pBuf, USHORT cbBuf);
1466: APIRET APIENTRY DosGetVersion(PUSHORT pVer);
1467: APIRET APIENTRY DosGetMachineMode(PBYTE pMachMode);
1468:
1469: #endif /* INCL_DOSMISC */
1470:
1471:
1472: /*** Session manager support */
1473:
1474: #ifdef INCL_DOSSESMGR
1475:
1476: typedef struct _STARTDATA { /* stdata */
1477: USHORT Length;
1478: USHORT Related;
1479: USHORT FgBg;
1480: USHORT TraceOpt;
1481: PSZ PgmTitle;
1482: PSZ PgmName;
1483: PBYTE PgmInputs;
1484: PBYTE TermQ;
1485: PBYTE Environment;
1486: USHORT InheritOpt;
1487: USHORT SessionType;
1488: PSZ IconFile;
1489: ULONG PgmHandle;
1490: USHORT PgmControl;
1491: USHORT InitXPos;
1492: USHORT InitYPos;
1493: USHORT InitXSize;
1494: USHORT InitYSize;
1495: USHORT Reserved;
1496: PSZ ObjectBuffer;
1497: ULONG ObjectBuffLen;
1498: } STARTDATA;
1499: typedef STARTDATA FAR *PSTARTDATA;
1500:
1501: #define SSF_RELATED_INDEPENDENT 0
1502: #define SSF_RELATED_CHILD 1
1503:
1504: #define SSF_FGBG_FORE 0
1505: #define SSF_FGBG_BACK 1
1506:
1507: #define SSF_TRACEOPT_NONE 0
1508: #define SSF_TRACEOPT_TRACE 1
1509: #define SSF_TRACEOPT_TRACEALL 2
1510:
1511: #define SSF_INHERTOPT_SHELL 0
1512: #define SSF_INHERTOPT_PARENT 1
1513:
1514: /* note that these types are identical to those in pmshl.h for PROG_* */
1515: #define SSF_TYPE_DEFAULT 0
1516: #define SSF_TYPE_FULLSCREEN 1
1517: #define SSF_TYPE_WINDOWABLEVIO 2
1518: #define SSF_TYPE_PM 3
1519: #define SSF_TYPE_VDM 4
1520: #define SSF_TYPE_GROUP 5
1521: #define SSF_TYPE_DLL 6
1522: #define SSF_TYPE_WINDOWEDVDM 7
1523: #define SSF_TYPE_PDD 8
1524: #define SSF_TYPE_VDD 9
1525:
1526: /* note that these flags are identical to those in pmshl.h for SHE_* */
1527: #define SSF_CONTROL_VISIBLE 0x0000
1528: #define SSF_CONTROL_INVISIBLE 0x0001
1529: #define SSF_CONTROL_MAXIMIZE 0x0002
1530: #define SSF_CONTROL_MINIMIZE 0x0004
1531: #define SSF_CONTROL_NOAUTOCLOSE 0x0008
1532: #define SSF_CONTROL_SETPOS 0x8000
1533:
1534: typedef struct _STATUSDATA { /* stsdata */
1535: USHORT Length;
1536: USHORT SelectInd;
1537: USHORT BondInd;
1538: } STATUSDATA;
1539: typedef STATUSDATA FAR *PSTATUSDATA;
1540:
1541: typedef struct _REGISTERDATA { /* regdata */
1542: USHORT Length;
1543: USHORT NotifType;
1544: PSZ DDName;
1545: } REGISTERDATA;
1546: typedef REGISTERDATA FAR *PREGISTERDATA;
1547:
1548: /* XLATOFF */
1549: #ifndef INCL_NOXLATE_DOS16
1550: #define DosQAppType Dos16QAppType
1551: #define DosSMRegisterDD Dos16SMRegisterDD
1552: #define DosSelectSession Dos16SelectSession
1553: #define DosSetSession Dos16SetSession
1554: #define DosStartSession Dos16StartSession
1555: #define DosStopSession Dos16StopSession
1556: #endif /* INCL_NOXLATE_DOS16 */
1557: /* XLATON */
1558:
1559: APIRET APIENTRY DosSMRegisterDD(PREGISTERDATA);
1560: APIRET APIENTRY DosStartSession(PSTARTDATA pstdata, PUSHORT pidSession,
1561: PUSHORT ppid);
1562: APIRET APIENTRY DosSetSession(USHORT idSession, PSTATUSDATA pstsdata);
1563: APIRET APIENTRY DosSelectSession(USHORT idSession, ULONG ulReserved);
1564: APIRET APIENTRY DosStopSession(USHORT fScope, USHORT idSession,
1565: ULONG ulReserved);
1566: APIRET APIENTRY DosQAppType(PSZ pszPrgName, PUSHORT pusType);
1567:
1568: #endif /* INCL_DOSSESMGR */
1569:
1570: #if (defined(INCL_DOSSESMGR) || defined(INCL_DOSFILEMGR))
1571:
1572: /* AppType returned in by DosQueryAppType in pFlags as follows */
1573: #define FAPPTYP_NOTSPEC 0x0000
1574: #define FAPPTYP_NOTWINDOWCOMPAT 0x0001
1575: #define FAPPTYP_WINDOWCOMPAT 0x0002
1576: #define FAPPTYP_WINDOWAPI 0x0003
1577: #define FAPPTYP_BOUND 0x0008
1578: #define FAPPTYP_DLL 0x0010
1579: #define FAPPTYP_DOS 0x0020
1580: #define FAPPTYP_PHYSDRV 0x0040 /* physical device driver */
1581: #define FAPPTYP_VIRTDRV 0x0080 /* virtual device driver */
1582: #define FAPPTYP_PROTDLL 0x0100 /* 'protected memory' dll */
1583: #define FAPPTYP_32BIT 0x4000
1584: #define FAPPTYP_EXETYPE FAPPTYP_WINDOWAPI
1585:
1586: #define FAPPTYP_RESERVED ~(FAPPTYP_WINDOWAPI | FAPPTYP_BOUND | FAPPTYP_DLL | FAPPTYP_DOS | FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV | FAPPTYP_PROTDLL | FAPPTYP_32BIT)
1587:
1588: #ifdef INCL_DOSFILEMGR
1589:
1590: #define EAT_APPTYP_PMAPI 0x00 /* Uses PM API */
1591: #define EAT_APPTYP_DOS 0x01 /* DOS APP */
1592: #define EAT_APPTYP_PMW 0x02 /* Window compatible */
1593: #define EAT_APPTYP_NOPMW 0x03 /* Not Window compatible */
1594: #define EAT_APPTYP_EXETYPE 0x03 /* EXE type mask */
1595: #define EAT_APPTYP_RESERVED ~(EAT_APPTYP_EXETYPE)
1596:
1597: #endif /* INCL_DOSFILEMGR */
1598:
1599: #endif /* INCL_DOSSESMGR || INCL_DOSFILEMGR */
1600:
1601: /*** Device support */
1602:
1603: #ifdef INCL_DOSDEVICES
1604:
1605: /* XLATOFF */
1606: #ifndef INCL_NOXLATE_DOS16
1607: #define DosCLIAccess Dos16CLIAccess
1608: #define DosDevConfig Dos16DevConfig
1609: #define DosDevIOCtl Dos16DevIOCtl
1610: #define DosDevIOCtl2 Dos16DevIOCtl2
1611: #define DosPhysicalDisk Dos16PhysicalDisk
1612: #define DosPortAccess Dos16PortAccess
1613: #define DosR2StackRealloc Dos16R2StackRealloc
1614: #define DosSystemService Dos16SystemService
1615: #define DosCallback Dos16Callback
1616: #endif /* INCL_NOXLATE_DOS16 */
1617: /* XLATON */
1618:
1619:
1620: APIRET APIENTRY DosDevConfig(PVOID pDevInfo, USHORT usItem, USHORT usReserved);
1621: #define DEVINFO_PRINTER 0 /* Number of printers attached */
1622: #define DEVINFO_RS232 1 /* Number of RS232 ports */
1623: #define DEVINFO_FLOPPY 2 /* Number of diskette drives */
1624: #define DEVINFO_COPROCESSOR 3 /* Presence of math coprocessor */
1625: #define DEVINFO_SUBMODEL 4 /* PC Submodel Type */
1626: #define DEVINFO_MODEL 5 /* PC Model Type */
1627: #define DEVINFO_ADAPTER 6 /* Primary display adapter type */
1628: #define DEVINFO_COPROCESSORTYPE 7 /* Type of coprocessor functionality */
1629:
1630: APIRET APIENTRY DosDevIOCtl(PVOID pData, PVOID pParms, USHORT usFun,
1631: USHORT usCategory, HFILE hDev);
1632: APIRET APIENTRY DosDevIOCtl2(PVOID pData, USHORT cbData, PVOID pParm,
1633: USHORT cbParm, USHORT usFun, USHORT usCategory,
1634: HFILE hDev);
1635: APIRET APIENTRY DosSystemService(USHORT usCategory, PVOID pRequest,
1636: PVOID pResponse);
1637:
1638: APIRET APIENTRY DosCLIAccess(VOID);
1639: APIRET APIENTRY DosPortAccess(USHORT usReserved, USHORT fRelease,
1640: USHORT usFirstPort, USHORT usLastPort);
1641: APIRET APIENTRY DosPhysicalDisk(USHORT usFun, PVOID pOut, USHORT cbOut,
1642: PVOID pParm, USHORT cbParm);
1643: #define INFO_COUNT_PARTITIONABLE_DISKS 1 /* # of partitionable disks */
1644: #define INFO_GETIOCTLHANDLE 2 /* Obtain handle */
1645: #define INFO_FREEIOCTLHANDLE 3 /* Release handle */
1646:
1647: APIRET APIENTRY DosR2StackRealloc(USHORT cbStack);
1648: VOID APIENTRY DosCallback(PFN pfn);
1649:
1650: #endif /* INCL_DOSDEVICES */
1651:
1652:
1653: /*** DosNamedPipes API Support */
1654:
1655: #ifdef INCL_DOSNMPIPES
1656:
1657: typedef SHANDLE HPIPE; /* hp */
1658: typedef HPIPE FAR *PHPIPE;
1659:
1660: typedef struct _AVAILDATA { /* AVAILDATA */
1661: USHORT cbpipe; /* bytes left in the pipe */
1662: USHORT cbmessage; /* bytes left in current message */
1663: } AVAILDATA;
1664: typedef AVAILDATA FAR *PAVAILDATA;
1665:
1666: typedef struct _PIPEINFO { /* nmpinf */
1667: USHORT cbOut; /* length of outgoing I/O buffer */
1668: USHORT cbIn; /* length of incoming I/O buffer */
1669: BYTE cbMaxInst; /* maximum number of instances */
1670: BYTE cbCurInst; /* current number of instances */
1671: BYTE cbName; /* length of pipe name */
1672: CHAR szName[1]; /* start of name */
1673: } PIPEINFO;
1674: typedef PIPEINFO FAR *PPIPEINFO;
1675:
1676: typedef struct _PIPESEMSTATE { /* nmpsmst */
1677: BYTE fStatus; /* type of record, 0 = EOI, 1 = read ok, */
1678: /* 2 = write ok, 3 = pipe closed */
1679: BYTE fFlag; /* additional info, 01 = waiting thread */
1680: USHORT usKey; /* user's key value */
1681: USHORT usAvail; /* available data/space if status = 1/2 */
1682: } PIPESEMSTATE;
1683: typedef PIPESEMSTATE FAR *PPIPESEMSTATE;
1684:
1685: #define NP_INDEFINITE_WAIT -1
1686: #define NP_DEFAULT_WAIT 0L
1687:
1688: /* DosPeekNmPipe() pipe states */
1689:
1690: #define NP_STATE_DISCONNECTED 0x0001
1691: #define NP_STATE_LISTENING 0x0002
1692: #define NP_STATE_CONNECTED 0x0003
1693: #define NP_STATE_CLOSING 0x0004
1694:
1695: /* DosCreateNPipe open modes */
1696:
1697: #define NP_ACCESS_INBOUND 0x0000
1698: #define NP_ACCESS_OUTBOUND 0x0001
1699: #define NP_ACCESS_DUPLEX 0x0002
1700: #define NP_INHERIT 0x0000
1701: #define NP_NOINHERIT 0x0080
1702: #define NP_WRITEBEHIND 0x0000
1703: #define NP_NOWRITEBEHIND 0x4000
1704:
1705: /* DosCreateNPipe and DosQueryNPHState state */
1706:
1707: #define NP_READMODE_BYTE 0x0000
1708: #define NP_READMODE_MESSAGE 0x0100
1709: #define NP_TYPE_BYTE 0x0000
1710: #define NP_TYPE_MESSAGE 0x0400
1711: #define NP_END_CLIENT 0x0000
1712: #define NP_END_SERVER 0x4000
1713: #define NP_WAIT 0x0000
1714: #define NP_NOWAIT 0x8000
1715: #define NP_UNLIMITED_INSTANCES 0x00FF
1716:
1717:
1718: /* XLATOFF */
1719: #ifndef INCL_NOXLATE_DOS16
1720: #define DosCallNmPipe Dos16CallNmPipe
1721: #define DosConnectNmPipe Dos16ConnectNmPipe
1722: #define DosDisConnectNmPipe Dos16DisConnectNmPipe
1723: #define DosMakeNmPipe Dos16MakeNmPipe
1724: #define DosPeekNmPipe Dos16PeekNmPipe
1725: #define DosQNmPHandState Dos16QNmPHandState
1726: #define DosQNmPipeInfo Dos16QNmPipeInfo
1727: #define DosQNmPipeSemState Dos16QNmPipeSemState
1728: #define DosSetNmPHandState Dos16SetNmPHandState
1729: #define DosSetNmPipeSem Dos16SetNmPipeSem
1730: #define DosTransactNmPipe Dos16TransactNmPipe
1731: #define DosWaitNmPipe Dos16WaitNmPipe
1732: #endif /* INCL_NOXLATE_DOS16 */
1733: /* XLATON */
1734:
1735: APIRET APIENTRY DosCallNmPipe(PSZ pszName, PVOID pInBuf, USHORT cbInBuf,
1736: PVOID pbOutBuf, USHORT cbOutBuf, PUSHORT pcbRead,
1737: ULONG ulTimeOut);
1738: APIRET APIENTRY DosConnectNmPipe(HPIPE hp);
1739: APIRET APIENTRY DosDisConnectNmPipe(HPIPE hp);
1740: APIRET APIENTRY DosMakeNmPipe(PSZ pszName, PHPIPE php, USHORT fsOpenMode,
1741: USHORT fsPipeMode, USHORT cbOutBuf,
1742: USHORT cbInBuf, ULONG ulTimeOut);
1743: APIRET APIENTRY DosPeekNmPipe(HPIPE hp, PVOID pBuf, USHORT cbBuf,
1744: PUSHORT pcbRead, PAVAILDATA pcbAvail,
1745: PUSHORT pfsState);
1746: APIRET APIENTRY DosQNmPHandState(HPIPE hp, PUSHORT pfsState);
1747: APIRET APIENTRY DosQNmPipeInfo(HPIPE hp, USHORT usInfoLevel, PVOID pBuf,
1748: USHORT cb);
1749: APIRET APIENTRY DosQNmPipeSemState(HSEM hsem, PPIPESEMSTATE pnpss, USHORT cb);
1750: APIRET APIENTRY DosSetNmPHandState(HPIPE hp, USHORT fsState);
1751: APIRET APIENTRY DosSetNmPipeSem(HPIPE hp, HSEM hsem, USHORT usKeyVal);
1752: APIRET APIENTRY DosTransactNmPipe(HPIPE hp, PVOID bOutBuf, USHORT cbOut,
1753: PVOID pInBuf, USHORT cbIn, PUSHORT pcbRead);
1754: APIRET APIENTRY DosWaitNmPipe(PSZ pszName, ULONG ulTimeOut);
1755:
1756: /* values in npss_status */
1757: #define NPSS_EOI 0 /* End Of Information */
1758: #define NPSS_RDATA 1 /* read data available */
1759: #define NPSS_WSPACE 2 /* write space available */
1760: #define NPSS_CLOSE 3 /* pipe in CLOSING state */
1761:
1762: /* values in npss_flag */
1763: #define NPSS_WAIT 0x01 /* waiting thread on end of pipe */
1764:
1765: /* defined bits in pipe mode */
1766: #define NP_NBLK 0x8000 /* non-blocking read/write */
1767: #define NP_SERVER 0x4000 /* set if server end */
1768: #define NP_WMESG 0x0400 /* write messages */
1769: #define NP_RMESG 0x0100 /* read as messages */
1770: #define NP_ICOUNT 0x00FF /* instance count field */
1771:
1772:
1773: /* Named pipes may be in one of several states depending on the actions
1774: * that have been taken on it by the server end and client end. The
1775: * following state/action table summarizes the valid state transitions:
1776: *
1777: * Current state Action Next state
1778: *
1779: * <none> server DosMakeNmPipe DISCONNECTED
1780: * DISCONNECTED server connect LISTENING
1781: * LISTENING client open CONNECTED
1782: * CONNECTED server disconn DISCONNECTED
1783: * CONNECTED client close CLOSING
1784: * CLOSING server disconn DISCONNECTED
1785: * CONNECTED server close CLOSING
1786: * <any other> server close <pipe deallocated>
1787: *
1788: * If a server disconnects his end of the pipe, the client end will enter a
1789: * special state in which any future operations (except close) on the file
1790: * descriptor associated with the pipe will return an error.
1791: */
1792:
1793: /*
1794: * Values for named pipe state
1795: */
1796:
1797: #define NP_DISCONNECTED 1 /* after pipe creation or Disconnect */
1798: #define NP_LISTENING 2 /* after DosNmPipeConnect */
1799: #define NP_CONNECTED 3 /* after Client open */
1800: #define NP_CLOSING 4 /* after Client or Server close */
1801:
1802:
1803: #endif /* INCL_DOSNMPIPES */
1804:
1805: /*** DosProfile API support */
1806:
1807: #ifdef INCL_DOSPROFILE
1808:
1809: /* DosProfile ordinal number */
1810:
1811: #define PROF_ORDINAL 133
1812:
1813: /* DosProfile usType */
1814:
1815: #define PROF_SYSTEM 0
1816: #define PROF_USER 1
1817: #define PROF_USEDD 2
1818: #define PROF_KERNEL 4
1819: #define PROF_VERBOSE 8
1820: #define PROF_ENABLE 16
1821:
1822: /* DosProfile usFunc */
1823:
1824: #define PROF_ALLOC 0
1825: #define PROF_CLEAR 1
1826: #define PROF_ON 2
1827: #define PROF_OFF 3
1828: #define PROF_DUMP 4
1829: #define PROF_FREE 5
1830:
1831: /* DosProfile tic count granularity (DWORD) */
1832:
1833: #define PROF_SHIFT 2
1834:
1835: /* DosProfile module name string length */
1836:
1837: #define PROF_MOD_NAME_SIZE 10
1838:
1839: /* DosProfile error code for end of data */
1840:
1841: #define PROF_END_OF_DATA 13
1842:
1843: #endif /* INCL_DOSPROFILE */
1844:
1845:
1846: /*** Virtual DOS Machine API support */
1847:
1848: #ifdef INCL_DOSMVDM
1849:
1850: /* XLATOFF */
1851: #ifndef INCL_NOXLATE_DOS16
1852: #define DosOpenVDD Dos16OpenVDD
1853: #define DosRequestVDD Dos16RequestVDD
1854: #define DosCloseVDD Dos16CloseVDD
1855: #define DosQueryDOSProperty Dos16QueryDOSProperty
1856: #define DosSetDOSProperty Dos16SetDOSProperty
1857: #endif /* INCL_NOXLATE_DOS16 */
1858: /* XLATON */
1859:
1860: typedef LHANDLE HVDD; /* hvdd */
1861: typedef HVDD FAR *PHVDD; /* phvdd */
1862:
1863: APIRET APIENTRY DosOpenVDD(PSZ pszvdd, PHVDD phvdd);
1864:
1865: APIRET APIENTRY DosRequestVDD(HVDD hvdd, SGID sgid, USHORT cmd,
1866: ULONG cbInput, PVOID pInput,
1867: ULONG cbOutput, PVOID pOutput);
1868:
1869: APIRET APIENTRY DosCloseVDD(HVDD hVDD);
1870:
1871: APIRET APIENTRY DosQueryDOSProperty(SGID sgid, PSZ pszName,
1872: USHORT cb, PSZ pch);
1873:
1874: APIRET APIENTRY DosSetDOSProperty(SGID sgid, PSZ pszName,
1875: USHORT cb, PSZ pch);
1876:
1877: #endif /* INCL_DOSMVDM */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.