Annotation of os232sdk/toolkt20/c/os2h/bsedos.h, revision 1.1.1.1

1.1       root        1: /*static char *SCCSID = "@(#)bsedos.h  13.61 90/05/05";*/
                      2: /***************************************************************************\
                      3: *
                      4: * Module Name: BSEDOS.H
                      5: *
                      6: * OS/2 Base Include File
                      7: *
                      8: * Copyright (c) 1987  Microsoft Corporation
                      9: * Copyright (c) 1987  IBM 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_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_DOSMISC           Miscellaneous
                     27: *   INCL_DOSMONITORS       Monitors
                     28: *   INCL_DOSQUEUES         Queues
                     29: *   INCL_DOSSESMGR         Session Manager Support
                     30: *   INCL_DOSDEVICES        Device specific, ring 2 support
                     31: *   INCL_DOSNMPIPES        Named Pipes Support
                     32: *   INCL_DOSPROFILE        DosProfile API
                     33: *   INCL_DOSMVDM           MVDM support
                     34: *
                     35: \***************************************************************************/
                     36: 
                     37: #define INCL_DOSINCLUDED
                     38: 
                     39: #ifndef INCL_BASEINCLUDED
                     40: #if !(defined(INCL_32) || defined(INCL_16))
                     41: #ifdef M_I386
                     42:     #define INCL_32
                     43: #else /* not M_I386 */
                     44:     #define INCL_16
                     45: #endif /* M_I386 */
                     46: #endif /* INCL_32 || INCL_16 */
                     47: 
                     48: /* XLATOFF */
                     49: #if defined(INCL_16)
                     50: #pragma message ("32-bit Base API included when using 16-bit compiler")
                     51: #endif /* INCL_32 */
                     52: /* XLATON */
                     53: #endif /* INCL_BASEINCLUDED */
                     54: 
                     55: #ifdef INCL_32 /* This #ifdef brackets the rest of this entire */
                     56:                        /* file.  It is used to include either the      */
                     57:                        /* 32-bit or 16-bit base definitions.  No       */
                     58:                        /* definitions (other than 16/32-bit            */
                     59:                        /* determination) must be placed above this.    */
                     60: 
                     61: #ifdef INCL_DOS
                     62: 
                     63: #define INCL_DOSPROCESS
                     64: #define INCL_DOSFILEMGR
                     65: #define INCL_DOSMEMMGR
                     66: #define INCL_DOSSEMAPHORES
                     67: #define INCL_DOSDATETIME
                     68: #define INCL_DOSMODULEMGR
                     69: #define INCL_DOSRESOURCES
                     70: #define INCL_DOSNLS
                     71: #define INCL_DOSSIGNALS
                     72: #define INCL_DOSMISC
                     73: #define INCL_DOSMONITORS
                     74: #define INCL_DOSQUEUES
                     75: #define INCL_DOSSESMGR
                     76: #define INCL_DOSDEVICES
                     77: #define INCL_DOSNMPIPES
                     78: #define INCL_DOSPROFILE
                     79: #define INCL_DOSMVDM
                     80: 
                     81: #endif /* INCL_DOS */
                     82: 
                     83: #ifdef INCL_ERRORS
                     84: #define INCL_DOSERRORS
                     85: #endif /* INCL_ERRORS */
                     86: 
                     87: #if (defined(INCL_DOSPROCESS) || !defined(INCL_NOCOMMON))
                     88: 
                     89: /*** General services */
                     90: 
                     91: APIRET APIENTRY        DosBeep(ULONG freq, ULONG dur);
                     92: 
                     93: /*** Process and Thread support */
                     94: 
                     95: VOID   APIENTRY        DosExit(ULONG action, ULONG result);
                     96: 
                     97: /* DosExit codes */
                     98: 
                     99: #define EXIT_THREAD        0
                    100: #define EXIT_PROCESS       1
                    101: 
                    102: #endif /* common INCL_DOSPROCESS stuff */
                    103: 
                    104: #ifdef INCL_DOSPROCESS
                    105: 
                    106: /* XLATOFF */
                    107: #define DosCwait       DosWaitChild
                    108: #define DosSetPrty     DosSetPriority
                    109: /* XLATON */
                    110: 
                    111: #include <bsetib.h>
                    112: 
                    113: typedef VOID (*PFNTHREAD)(VOID);
                    114: 
                    115: APIRET APIENTRY        DosCreateThread(PTID ptid, PFNTHREAD pfn, ULONG param, ULONG flag, ULONG cbStack);
                    116: 
                    117: APIRET APIENTRY        DosResumeThread(TID tid);
                    118: 
                    119: APIRET APIENTRY        DosSuspendThread(TID tid);
                    120: 
                    121: APIRET APIENTRY        DosGetThreadInfo(PTIB *pptib,PPIB *pppib);
                    122: 
                    123: /* Action code values */
                    124: 
                    125: #define DCWA_PROCESS       0
                    126: #define DCWA_PROCESSTREE    1
                    127: 
                    128: /* Wait option values */
                    129: 
                    130: #define DCWW_WAIT   0
                    131: #define DCWW_NOWAIT 1
                    132: 
                    133: typedef struct _RESULTCODES {    /* resc */
                    134:     ULONG codeTerminate;
                    135:     ULONG codeResult;
                    136: } RESULTCODES;
                    137: typedef RESULTCODES    *PRESULTCODES;
                    138: 
                    139: APIRET APIENTRY        DosWaitChild(ULONG action, ULONG option, PRESULTCODES pres, PPID ppid, PID pid);
                    140: 
                    141: APIRET APIENTRY        DosWaitThread(PPID ppid, ULONG option);
                    142: 
                    143: APIRET APIENTRY        DosSleep(ULONG msec);
                    144: 
                    145: APIRET APIENTRY        DosDebug(PVOID pdbgbuf);
                    146: 
                    147: 
                    148: /* codeTerminate values (also passed to ExitList routines) */
                    149: 
                    150: #define TC_EXIT                 0
                    151: #define TC_HARDERROR    1
                    152: #define TC_TRAP                 2
                    153: #define TC_KILLPROCESS  3
                    154: 
                    155: typedef VOID   (*PFNEXITLIST)(ULONG);
                    156: 
                    157: APIRET APIENTRY        DosEnterCritSec(VOID);
                    158: 
                    159: APIRET APIENTRY        DosExitCritSec(VOID);
                    160: 
                    161: APIRET APIENTRY        DosExitList(ULONG ordercode, PFNEXITLIST pfn);
                    162: 
                    163: /* DosExitList functions */
                    164: 
                    165: #define EXLST_ADD      1
                    166: #define EXLST_REMOVE   2
                    167: #define EXLST_EXIT     3
                    168: 
                    169: APIRET APIENTRY        DosExecPgm(PCHAR pObjname, LONG cbObjname, ULONG execFlag, PSZ pArg, PSZ pEnv, PRESULTCODES pRes, PSZ pName);
                    170: 
                    171: /* DosExecPgm functions */
                    172: 
                    173: #define EXEC_SYNC          0
                    174: #define EXEC_ASYNC         1
                    175: #define EXEC_ASYNCRESULT    2
                    176: #define EXEC_TRACE         3
                    177: #define EXEC_BACKGROUND            4
                    178: #define EXEC_LOAD          5
                    179: 
                    180: 
                    181: APIRET APIENTRY        DosSetPriority(ULONG scope, ULONG class, LONG delta, ULONG PorTid);
                    182: 
                    183: /* Priority scopes */
                    184: 
                    185: #define PRTYS_PROCESS      0
                    186: #define PRTYS_PROCESSTREE   1
                    187: #define PRTYS_THREAD       2
                    188: 
                    189: /* Priority classes */
                    190: 
                    191: #define PRTYC_NOCHANGE     0
                    192: #define PRTYC_IDLETIME     1
                    193: #define PRTYC_REGULAR      2
                    194: #define PRTYC_TIMECRITICAL  3
                    195: #define PRTYC_FOREGROUNDSERVER 4
                    196: 
                    197: /* Priority deltas */
                    198: 
                    199: #define PRTYD_MINIMUM     -31
                    200: #define PRTYD_MAXIMUM      31
                    201: 
                    202: APIRET APIENTRY        DosKillProcess(ULONG action, PID pid);
                    203: 
                    204: #define DKP_PROCESSTREE            0
                    205: #define DKP_PROCESS        1
                    206: 
                    207: #endif /* INCL_DOSPROCESS */
                    208: 
                    209: #ifndef INCL_SAADEFS
                    210: 
                    211: /*
                    212:  * CCHMAXPATH is the maximum fully qualified path name length including
                    213:  * the drive letter, colon, backslashes and terminating NULL.
                    214:  */
                    215: #define CCHMAXPATH     260
                    216: 
                    217: /*
                    218:  * CCHMAXPATHCOMP is the maximum individual path component name length
                    219:  * including a terminating NULL.
                    220:  */
                    221: #define CCHMAXPATHCOMP 256
                    222: 
                    223: #endif /* !INCL_SAADEFS */
                    224: 
                    225: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
                    226: 
                    227: /*** File manager */
                    228: 
                    229: /* DosSetFilePtr() file position codes */
                    230: 
                    231: #define FILE_BEGIN     0x0000  /* Move relative to beginning of file */
                    232: #define FILE_CURRENT   0x0001  /* Move relative to current fptr position */
                    233: #define FILE_END       0x0002  /* Move relative to end of file */
                    234: 
                    235: /* DosFindFirst/Next Directory handle types */
                    236: 
                    237: #define HDIR_SYSTEM    1       /* Use system handle (1) */
                    238: #define HDIR_CREATE    (-1)    /* Allocate a new, unused handle */
                    239: 
                    240: /* DosCopy control bits; may be or'ed together */
                    241: #define DCPY_EXISTING  0x00001         /* Copy even if target exists */
                    242: #define DCPY_APPEND    0x00002         /* Append to existing file, do not replace */
                    243: #define DCPY_FAILEAS   0x00004         /* Fail if EAs not supported on target*/
                    244: 
                    245: /* DosOpen/DosQFHandState/DosQueryFileInfo et al file attributes; also */
                    246: /* known as Dso File Mode bits... */
                    247: #define FILE_NORMAL    0x0000
                    248: #define FILE_READONLY  0x0001
                    249: #define FILE_HIDDEN    0x0002
                    250: #define FILE_SYSTEM    0x0004
                    251: #define FILE_DIRECTORY 0x0010
                    252: #define FILE_ARCHIVED  0x0020
                    253: 
                    254: /* DosOpen() actions */
                    255: 
                    256: #define FILE_EXISTED   0x0001
                    257: #define FILE_CREATED   0x0002
                    258: #define FILE_TRUNCATED 0x0003
                    259: 
                    260: /* DosOpen() open flags */
                    261: #define FILE_OPEN                 0x0001
                    262: #define FILE_TRUNCATE             0x0002
                    263: #define FILE_CREATE               0x0010
                    264: 
                    265: /*     this nibble applies if file already exists               xxxx */
                    266: 
                    267: #define OPEN_ACTION_FAIL_IF_EXISTS     0x0000  /* ---- ---- ---- 0000 */
                    268: #define OPEN_ACTION_OPEN_IF_EXISTS     0x0001  /* ---- ---- ---- 0001 */
                    269: #define OPEN_ACTION_REPLACE_IF_EXISTS  0x0002  /* ---- ---- ---- 0010 */
                    270: 
                    271: /*     this nibble applies if file does not exist          xxxx      */
                    272: 
                    273: #define OPEN_ACTION_FAIL_IF_NEW               0x0000  /* ---- ---- 0000 ---- */
                    274: #define OPEN_ACTION_CREATE_IF_NEW      0x0010  /* ---- ---- 0001 ---- */
                    275: 
                    276: /* DosOpen/DosSetFHandState flags */
                    277: 
                    278: #define OPEN_ACCESS_READONLY       0x0000  /* ---- ---- ---- -000 */
                    279: #define OPEN_ACCESS_WRITEONLY      0x0001  /* ---- ---- ---- -001 */
                    280: #define OPEN_ACCESS_READWRITE      0x0002  /* ---- ---- ---- -010 */
                    281: #define OPEN_SHARE_DENYREADWRITE    0x0010  /* ---- ---- -001 ---- */
                    282: #define OPEN_SHARE_DENYWRITE       0x0020  /* ---- ---- -010 ---- */
                    283: #define OPEN_SHARE_DENYREAD        0x0030  /* ---- ---- -011 ---- */
                    284: #define OPEN_SHARE_DENYNONE        0x0040  /* ---- ---- -100 ---- */
                    285: #define OPEN_FLAGS_NOINHERIT       0x0080  /* ---- ---- 1--- ---- */
                    286: #define OPEN_FLAGS_NO_LOCALITY     0x0000  /* ---- -000 ---- ---- */
                    287: #define OPEN_FLAGS_SEQUENTIAL      0x0100  /* ---- -001 ---- ---- */
                    288: #define OPEN_FLAGS_RANDOM          0x0200  /* ---- -010 ---- ---- */
                    289: #define OPEN_FLAGS_RANDOMSEQUENTIAL 0x0300  /* ---- -011 ---- ---- */
                    290: #define OPEN_FLAGS_NO_CACHE        0x1000  /* ---1 ---- ---- ---- */
                    291: #define OPEN_FLAGS_FAIL_ON_ERROR    0x2000  /* --1- ---- ---- ---- */
                    292: #define OPEN_FLAGS_WRITE_THROUGH    0x4000  /* -1-- ---- ---- ---- */
                    293: #define OPEN_FLAGS_DASD                    0x8000  /* 1--- ---- ---- ---- */
                    294: 
                    295: 
                    296: /* DosSearchPath() constants */
                    297: 
                    298: #define SEARCH_PATH           0x0000
                    299: #define SEARCH_CUR_DIRECTORY   0x0001
                    300: #define SEARCH_ENVIRONMENT     0x0002
                    301: #define SEARCH_IGNORENETERRS   0x0004
                    302: 
                    303: /************************************************************
                    304: DosFileIO
                    305: =========================================
                    306: ************************************************************/
                    307: /* File IO command words */
                    308: #define FIO_LOCK       0       /* Lock Files */
                    309: #define FIO_UNLOCK     1       /* Unlock Files */
                    310: #define FIO_SEEK       2       /* Seek (set file ptr) */
                    311: #define FIO_READ       3       /* File Read */
                    312: #define FIO_WRITE      4       /* File Write */
                    313: 
                    314: /* Lock Sharing Modes */
                    315: #define FIO_NOSHARE    0       /* None */
                    316: #define FIO_SHAREREAD  1       /* Read-Only */
                    317: 
                    318: typedef struct _FIOLOCKCMD {           /* FLC File Lock Cmd prefix */
                    319:     USHORT     usCmd;          /* Cmd = FIO_LOCK */
                    320:     ULONG      cTimeOut;       /* in Msec */
                    321:     USHORT     cLockCnt;       /* Lock records that follow */
                    322: } FIOLOCKCMD;
                    323: typedef FIOLOCKCMD FAR *PFIOLOCKCMD;
                    324: 
                    325: 
                    326: typedef struct _FIOLOCKREC {           /* FLR File Lock Record */
                    327:     USHORT     fShare;                 /* FIO_NOSHARE or FIO_SHAREREAD */
                    328:     ULONG      cbStart;                /* Starting offset for lock region */
                    329:     ULONG      cbLength;               /* Length of lock region */
                    330: } FIOLOCKREC;
                    331: typedef FIOLOCKREC FAR *PIOLOCKREC;
                    332: 
                    333: 
                    334: typedef struct _FIOUNLOCKCMD {         /* FUC File Unlock Cmd prefix */
                    335:     USHORT     usCmd;                  /* Cmd = FIO_UNLOCK */
                    336:     USHORT     cUnlockCnt;             /* Unlock records that follow */
                    337: } FIOUNLOCKCMD;
                    338: typedef FIOUNLOCKCMD FAR *PFIOUNLOCKCMD;
                    339: 
                    340: 
                    341: typedef struct _FIOUNLOCKREC {         /* FUR File Unlock Record */
                    342:     ULONG      cbStart;                /* Starting offset for unlock region */
                    343:     ULONG      cbLength;               /* Length of unlock region */
                    344: } FIOUNLOCKREC;
                    345: typedef FIOUNLOCKREC FAR *PFIOUNLOCKREC;
                    346: 
                    347: 
                    348: typedef struct _FIOSEEKCMD {           /* FSC Seek command structure */
                    349:     USHORT     usCmd;                  /* Cmd = FIO_SEEK */
                    350:     USHORT     fsMethod;               /* One of&gml FPM_BEGINNING,
                    351:                                           FPM_CURRENT, or FPM_END */
                    352:     ULONG      cbDistance;             /* Byte offset for seek */
                    353:     ULONG      cbNewPosition;          /* Bytes from start of file after
                    354:                                           seek */
                    355: } FIOSEEKCMD;
                    356: typedef FIOSEEKCMD FAR *PFIOSEEKCMD;
                    357: 
                    358: 
                    359: typedef struct _FIOREADWRITE {         /* RWC Read & Write command structure */
                    360:     USHORT     usCmd;                  /* Cmd = FIO_READ or FIO_WRITE */
                    361:     PVOID      pbBuffer;               /* Pointer to data buffer */
                    362:     ULONG      cbBufferLen;            /* Bytes in buffer or max size */
                    363:     ULONG      cbActualLen;            /* Bytes actually read/written */
                    364: } FIOREADWRITE;
                    365: typedef FIOREADWRITE FAR *PFIOREADWRITE;
                    366: 
                    367: 
                    368: /************************************************************
                    369: EA Info Levels & Find First/Next
                    370: =========================================
                    371: API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
                    372:        DosSetPathInfo
                    373: ************************************************************/
                    374: 
                    375: /* File info levels&gml All listed API's */
                    376: #define FIL_STANDARD           1       /* Info level 1, standard file info */
                    377: #define FIL_QUERYEASIZE                2       /* Level 2, return Full EA size */
                    378: #define FIL_QUERYEASFROMLIST   3       /* Level 3, return requested EA's */
                    379: #define FIL_QUERYALLEAS                4       /* Level 4, return all EA's */
                    380: 
                    381: /* File info levels: Dos...PathInfo only */
                    382: #define FIL_QUERYFULLNAME      5       /* Level 5, return fully qualified
                    383:                                           name of file */
                    384: #define FIL_NAMEISVALID                6       /* Level 6, check validity of file/path
                    385:                                           name for this FSD */
                    386: 
                    387: 
                    388: /* DosFsAttach() */
                    389: /* Attact or detach */
                    390: #define FS_ATTACH      0       /* Attach file server */
                    391: #define FS_DETACH      1       /* Detach file server */
                    392: 
                    393: 
                    394: /* DosFsCtl() */
                    395: /* Routing type */
                    396: #define FSCTL_HANDLE   1       /* File Handle directs req routing */
                    397: #define FSCTL_PATHNAME 2       /* Path Name directs req routing */
                    398: #define FSCTL_FSDNAME  3       /* FSD Name directs req routing */
                    399: 
                    400: 
                    401: /* DosQueryFSAttach() */
                    402: /* Information level types (defines method of query) */
                    403: #define FSAIL_QUERYNAME 1      /* Return data for a Drive or Device */
                    404: #define FSAIL_DEVNUMBER 2      /* Return data for Ordinal Device # */
                    405: #define FSAIL_DRVNUMBER 3      /* Return data for Ordinal Drive # */
                    406: 
                    407: /* Item types (from data structure item "iType") */
                    408: #define FSAT_CHARDEV   1       /* Resident character device */
                    409: #define FSAT_PSEUDODEV 2       /* Pusedu-character device */
                    410: #define FSAT_LOCALDRV  3       /* Local drive */
                    411: #define FSAT_REMOTEDRV 4       /* Remote drive attached to FSD */
                    412: 
                    413: typedef struct _FSQBUFFER {    /* fsqbuf Data structure for QFSAttach*/
                    414:     USHORT     iType;          /* Item type */
                    415:     USHORT     cbName;         /* Length of item name, sans NULL */
                    416:     UCHAR      szName[1];      /* ASCIIZ item name */
                    417:     USHORT     cbFSDName;      /* Length of FSD name, sans NULL */
                    418:     UCHAR      szFSDName[1];   /* ASCIIZ FSD name */
                    419:     USHORT     cbFSAData;      /* Length of FSD Attach data returned */
                    420:     UCHAR      rgFSAData[1];   /* FSD Attach data from FSD */
                    421: } FSQBUFFER;
                    422: typedef FSQBUFFER FAR *PFSQBUFFER;
                    423: 
                    424: 
                    425: /***********
                    426: File System Drive Information&gml DosQueryFSInfo DosSetFSInfo
                    427: ***********/
                    428: 
                    429: /* FS Drive Info Levels */
                    430: #define FSIL_ALLOC     1       /* Drive allocation info (Query only) */
                    431: #define FSIL_VOLSER    2       /* Drive Volum/Serial info */
                    432: 
                    433: /* DosQueryFHType() */
                    434: /* Handle classes (low 8 bits of Handle Type) */
                    435: #define FHT_DISKFILE   0x0000          /* Disk file handle */
                    436: #define FHT_CHRDEV     0x0001          /* Character device handle */
                    437: #define FHT_PIPE       0x0002          /* Pipe handle */
                    438: 
                    439: /* Handle bits (high 8 bits of Handle Type) */
                    440: #define FHB_DSKREMOTE          0x8000  /* Remote disk */
                    441: #define FHB_CHRDEVREMOTE       0x8000  /* Remote character device */
                    442: #define FHB_PIPEREMOTE         0x8000  /* Remote pipe */
                    443: 
                    444: #ifndef INCL_SAADEFS
                    445: 
                    446: /* File time and date types */
                    447: 
                    448: typedef struct _FTIME {                /* ftime */
                    449:     USHORT twosecs : 5;
                    450:     USHORT minutes : 6;
                    451:     USHORT hours   : 5;
                    452: } FTIME;
                    453: typedef FTIME  *PFTIME;
                    454: 
                    455: typedef struct _FDATE {                /* fdate */
                    456:     USHORT day    : 5;
                    457:     USHORT month   : 4;
                    458:     USHORT year           : 7;
                    459: } FDATE;
                    460: typedef FDATE  *PFDATE;
                    461: 
                    462: #endif /* INCL_SAADEFS */
                    463: 
                    464: typedef struct _VOLUMELABEL {   /* vol */
                    465:     BYTE cch;
                    466:     CHAR szVolLabel[12];
                    467: } VOLUMELABEL;
                    468: typedef VOLUMELABEL FAR *PVOLUMELABEL;
                    469: 
                    470: typedef struct _FSINFO {    /* fsinf */
                    471:     FDATE fdateCreation;
                    472:     FTIME ftimeCreation;
                    473:     VOLUMELABEL vol;
                    474: } FSINFO;
                    475: typedef FSINFO FAR *PFSINFO;
                    476: 
                    477: /* HANDTYPE values */
                    478: 
                    479: #define HANDTYPE_FILE    0x0000
                    480: #define HANDTYPE_DEVICE          0x0001
                    481: #define HANDTYPE_PIPE    0x0002
                    482: #define HANDTYPE_NETWORK  0x8000
                    483: 
                    484: typedef struct _FILELOCK {    /* flock */
                    485:     LONG lOffset;
                    486:     LONG lRange;
                    487: } FILELOCK;
                    488: typedef FILELOCK FAR *PFILELOCK;
                    489: 
                    490: typedef SHANDLE HFILE;    /* hf */
                    491: typedef HFILE  *PHFILE;
                    492: 
                    493: #ifndef INCL_SAADEFS
                    494: 
                    495: typedef struct _FILEFINDBUF {  /* findbuf */
                    496:     FDATE  fdateCreation;
                    497:     FTIME  ftimeCreation;
                    498:     FDATE  fdateLastAccess;
                    499:     FTIME  ftimeLastAccess;
                    500:     FDATE  fdateLastWrite;
                    501:     FTIME  ftimeLastWrite;
                    502:     ULONG  cbFile;
                    503:     ULONG  cbFileAlloc;
                    504:     USHORT attrFile;
                    505:     UCHAR  cchName;
                    506:     CHAR   achName[CCHMAXPATHCOMP];
                    507: } FILEFINDBUF;
                    508: typedef FILEFINDBUF    *PFILEFINDBUF;
                    509: 
                    510: #pragma pack(2)
                    511: 
                    512: typedef struct _FILEFINDBUF2 { /* findbuf2 */
                    513:     FDATE  fdateCreation;
                    514:     FTIME  ftimeCreation;
                    515:     FDATE  fdateLastAccess;
                    516:     FTIME  ftimeLastAccess;
                    517:     FDATE  fdateLastWrite;
                    518:     FTIME  ftimeLastWrite;
                    519:     ULONG  cbFile;
                    520:     ULONG  cbFileAlloc;
                    521:     USHORT attrFile;
                    522:     ULONG  cbList;
                    523:     UCHAR  cchName;
                    524:     CHAR   achName[CCHMAXPATHCOMP];
                    525: } FILEFINDBUF2;
                    526: 
                    527: #pragma pack()
                    528: 
                    529: typedef FILEFINDBUF2   *PFILEFINDBUF2;
                    530: 
                    531: /* extended attribute structures */
                    532: 
                    533: typedef struct _GEA {      /* gea */
                    534:     BYTE cbName;           /* name length not including NULL */
                    535:     CHAR szName[1];        /* attribute name */
                    536: } GEA;
                    537: typedef GEA    *PGEA;
                    538: 
                    539: typedef struct _GEALIST {   /* geal */
                    540:     ULONG cbList;          /* total bytes of structure including full list */
                    541:     GEA list[1];           /* variable length GEA structures */
                    542: } GEALIST;
                    543: typedef GEALIST* PGEALIST;
                    544: 
                    545: typedef struct _FEA {      /* fea */
                    546:     BYTE fEA;              /* flags                              */
                    547:     BYTE cbName;           /* name length not including NULL */
                    548:     USHORT cbValue;        /* value length */
                    549: } FEA;
                    550: typedef FEA    *PFEA;
                    551: 
                    552: /* flags for _FEA.fEA */
                    553: 
                    554: #define FEA_NEEDEA 0x80            /* need EA bit */
                    555: 
                    556: typedef struct _FEALIST {   /* feal */
                    557:     ULONG cbList;          /* total bytes of structure including full list */
                    558:     FEA list[1];           /* variable length FEA structures */
                    559: } FEALIST;
                    560: typedef FEALIST* PFEALIST;
                    561: 
                    562: typedef struct _EAOP {     /* eaop */
                    563:     PGEALIST fpGEAList;            /* general EA list */
                    564:     PFEALIST fpFEAList;            /* full EA list */
                    565:     ULONG oError;
                    566: } EAOP;
                    567: typedef EAOP* PEAOP;
                    568: 
                    569: /*
                    570:  * Equates for the types of EAs that follow the convention that we have
                    571:  * established.
                    572:  *
                    573:  * Values 0xFFFE thru 0x8000 are reserved.
                    574:  * Values 0x0000 thru 0x7fff are user definable.
                    575:  * Value  0xFFFC is not used
                    576:  */
                    577: 
                    578: #define EAT_BINARY     0xFFFE          /* length preceeded binary */
                    579: #define EAT_ASCII      0xFFFD          /* length preceeded ASCII */
                    580: #define EAT_BITMAP     0xFFFB          /* length preceeded bitmap */
                    581: #define EAT_METAFILE   0xFFFA          /* length preceeded metafile */
                    582: #define EAT_ICON       0xFFF9          /* length preceeded icon */
                    583: #define EAT_EA         0xFFEE          /* length preceeded ASCII */
                    584:                                        /* name of associated data (#include) */
                    585: #define EAT_MVMT       0xFFDF          /* multi-valued, multi-typed field */
                    586: #define EAT_MVST       0xFFDE          /* multi-valued, single-typed field */
                    587: #define EAT_ASN1       0xFFDD          /* ASN.1 field */
                    588: 
                    589: #endif /* !INCL_SAADEFS */
                    590: 
                    591: APIRET APIENTRY        DosOpen(PSZ pszFile, PHFILE pHfile, PULONG pulAction, ULONG cbSize, ULONG attr, ULONG flag, ULONG mode, PEAOP peaop);
                    592: 
                    593: APIRET APIENTRY        DosClose(HFILE hFile);
                    594: 
                    595: APIRET APIENTRY        DosRead(HFILE hFile, PVOID pBuffer, ULONG cbRead, PULONG pcbActual);
                    596: 
                    597: APIRET APIENTRY        DosWrite(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual);
                    598: 
                    599: /* File time and date types */
                    600: 
                    601: typedef struct _FILESTATUS {   /* fsts */
                    602:     FDATE  fdateCreation;
                    603:     FTIME  ftimeCreation;
                    604:     FDATE  fdateLastAccess;
                    605:     FTIME  ftimeLastAccess;
                    606:     FDATE  fdateLastWrite;
                    607:     FTIME  ftimeLastWrite;
                    608:     ULONG  cbFile;
                    609:     ULONG  cbFileAlloc;
                    610:     USHORT attrFile;
                    611: } FILESTATUS;
                    612: typedef FILESTATUS     *PFILESTATUS;
                    613: 
                    614: #pragma pack(2)
                    615: 
                    616: typedef struct _FILESTATUS2 {  /* fsts2 */
                    617:     FDATE  fdateCreation;
                    618:     FTIME  ftimeCreation;
                    619:     FDATE  fdateLastAccess;
                    620:     FTIME  ftimeLastAccess;
                    621:     FDATE  fdateLastWrite;
                    622:     FTIME  ftimeLastWrite;
                    623:     ULONG  cbFile;
                    624:     ULONG  cbFileAlloc;
                    625:     USHORT attrFile;
                    626:     ULONG  cbList;
                    627: } FILESTATUS2;
                    628: 
                    629: #pragma pack()
                    630: 
                    631: typedef FILESTATUS2    *PFILESTATUS2;
                    632: 
                    633: typedef struct _FSALLOCATE {   /* fsalloc */
                    634:     ULONG  idFileSystem;
                    635:     ULONG  cSectorUnit;
                    636:     ULONG  cUnit;
                    637:     ULONG  cUnitAvail;
                    638:     USHORT cbSector;
                    639: } FSALLOCATE;
                    640: typedef FSALLOCATE     *PFSALLOCATE;
                    641: 
                    642: typedef SHANDLE HDIR;       /* hdir */
                    643: typedef HDIR   *PHDIR;
                    644: 
                    645: /* XLATOFF */
                    646: #define DosOpen2       DosOpen
                    647: #define        DosFindFirst2   DosFindFirst
                    648: #define DosQFHandState DosQueryFHState
                    649: #define DosSetFHandState       DosSetFHState
                    650: #define DosQHandType   DosQueryHType
                    651: #define DosQFSAttach   DosQueryFSAttach
                    652: #define DosNewSize     DosSetFileSize
                    653: #define DosBufReset    DosResetBuffer
                    654: #define DosChgFilePtr  DosSetFilePtr
                    655: #define DosFileLocks   DosSetFileLocks
                    656: #define DosMkDir       DosCreateDir
                    657: #define DosMkDir2      DosCreateDir
                    658: #define DosRmDir       DosDeleteDir
                    659: #define DosSelectDisk  DosSetDefaultDisk
                    660: #define DosQCurDisk    DosQueryCurrentDisk
                    661: #define DosChDir       DosSetCurrentDir
                    662: #define DosQCurDir     DosQueryCurrentDir
                    663: #define DosQFSInfo     DosQueryFSInfo
                    664: #define DosQVerify     DosQueryVerify
                    665: #define DosQFileInfo   DosQueryFileInfo
                    666: #define DosQPathInfo   DosQueryPathInfo
                    667: /* XLATON */
                    668: 
                    669: APIRET APIENTRY        DosDelete(PSZ pszFile);
                    670: 
                    671: APIRET APIENTRY        DosDupHandle(HFILE hFile, PHFILE pHfile);
                    672: 
                    673: APIRET APIENTRY        DosQueryFHState(HFILE hFile, PULONG pMode);
                    674: 
                    675: APIRET APIENTRY        DosSetFHState(HFILE hFile, ULONG mode);
                    676: 
                    677: APIRET APIENTRY        DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr);
                    678: 
                    679: APIRET APIENTRY        DosFindFirst(PSZ pszMatch, PHDIR pHdir, ULONG attr, PFILEFINDBUF pfindbuf, ULONG cbBuf, PULONG pcSearch, ULONG infolevel);
                    680: 
                    681: APIRET APIENTRY        DosFindNext(HDIR hDir, PFILEFINDBUF pFindbuf, ULONG cbBuf, PULONG pcSearch);
                    682: 
                    683: APIRET APIENTRY        DosFindClose(HDIR hDir);
                    684: 
                    685: APIRET APIENTRY        DosFSAttach(PSZ pszDevice, PSZ pszFilesystem, PVOID pData, ULONG cbData, ULONG flag);
                    686: 
                    687: APIRET APIENTRY        DosQueryFSAttach(PSZ pszDevice, ULONG ordinal, ULONG infolevel, PVOID pFSAttr, PULONG cbFSAttr);
                    688: 
                    689: APIRET APIENTRY        DosFSCtl(PVOID pData, ULONG cbData, PULONG pcbData, PVOID pParms, ULONG cbParms, PULONG pcbParms, ULONG function, PSZ pszRoute, HFILE hFile, ULONG method);
                    690: 
                    691: APIRET APIENTRY        DosSetFileSize(HFILE hFile, ULONG cbSize);
                    692: 
                    693: APIRET APIENTRY        DosResetBuffer(HFILE hFile);
                    694: 
                    695: APIRET APIENTRY        DosSetFilePtr(HFILE hFile, LONG ib, ULONG method, PULONG ibActual);
                    696: 
                    697: APIRET APIENTRY        DosSetFileLocks(HFILE hFile, PFILELOCK pflUnlock, PFILELOCK pflLock);
                    698: 
                    699: APIRET APIENTRY        DosMove(PSZ pszOld, PSZ pszNew);
                    700: 
                    701: APIRET APIENTRY        DosCopy(PSZ pszOld, PSZ pszNew, ULONG option);
                    702: 
                    703: APIRET APIENTRY        DosEditName(ULONG metalevel, PSZ pszSource, PSZ pszEdit, PBYTE pszTarget, ULONG cbTarget);
                    704: 
                    705: APIRET APIENTRY        DosFileIO(HFILE hFile, PVOID pCmd, ULONG cbCmd, PLONG ibError);
                    706: 
                    707: APIRET APIENTRY        DosCreateDir(PSZ pszDir, PEAOP peaop);
                    708: 
                    709: APIRET APIENTRY        DosDeleteDir(PSZ pszDir);
                    710: 
                    711: APIRET APIENTRY        DosSetDefaultDisk(ULONG disknum);
                    712: 
                    713: APIRET APIENTRY        DosQueryCurrentDisk(PULONG pdisknum, PULONG plogical);
                    714: 
                    715: APIRET APIENTRY        DosSetCurrentDir(PSZ pszDir);
                    716: 
                    717: APIRET APIENTRY        DosQueryCurrentDir(ULONG disknum, PBYTE pBuf, PULONG pcbBuf);
                    718: 
                    719: APIRET APIENTRY        DosQueryFSInfo(ULONG disknum, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                    720: 
                    721: APIRET APIENTRY        DosSetFSInfo(ULONG disknum, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                    722: 
                    723: APIRET APIENTRY        DosQueryVerify(PBOOL32 pBool);
                    724: 
                    725: APIRET APIENTRY        DosSetVerify(BOOL32);
                    726: 
                    727: APIRET APIENTRY        DosSetMaxFH(ULONG cFH);
                    728: 
                    729: APIRET  APIENTRY        DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
                    730: 
                    731: APIRET APIENTRY        DosQueryFileInfo(HFILE hFile, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                    732: 
                    733: APIRET APIENTRY        DosSetFileInfo(HFILE hFile, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                    734: 
                    735: APIRET APIENTRY        DosQueryPathInfo(PSZ pszPath, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                    736: 
                    737: APIRET APIENTRY        DosSetPathInfo(PSZ pszPath, ULONG infolevel, PVOID pBuf, ULONG cbBuf, ULONG usFlags);
                    738: 
                    739: /* defines for DosSetPathInfo -pathinfo flag */
                    740: #define DSPI_WRTTHRU   0x10    /* write through */
                    741: 
                    742: 
                    743: APIRET APIENTRY        DosEnumAttribute(ULONG fRefType, PVOID pFileRef, ULONG iStartEntry, PVOID pEnumBuf, ULONG cbBuf, PULONG pcbActual, ULONG infoLevel);
                    744: 
                    745: typedef struct _DENA1 {        /* _dena1 level 1 info returned from DosEnumAttribute */
                    746:     UCHAR      reserved;       /* 0 */
                    747:     UCHAR      cbName;         /* length of name exculding NULL */
                    748:     USHORT     cbValue;        /* length of value */
                    749:     UCHAR      szName[1];      /* variable length asciiz name */
                    750: } DENA1;
                    751: typedef DENA1 FAR *PDENA1;
                    752: 
                    753: /* Infolevels for DosEnumAttribute  */
                    754: #define        ENUMEA_LEVEL_NO_VALUE   1L      /* FEA without value */
                    755: /* Reference types for DosEnumAttribute */
                    756: #define        ENUMEA_REFTYPE_FHANDLE  0       /* file handle */
                    757: #define        ENUMEA_REFTYPE_PATH     1       /* path name */
                    758: #define        ENUMEA_REFTYPE_MAX      ENUMEA_REFTYPE_PATH
                    759: 
                    760: #endif /* common INCL_DOSFILEMGR */
                    761: 
                    762: #if (defined(INCL_DOSMEMMGR) || !defined(INCL_NOCOMMON))
                    763: /*** Memory management */
                    764: 
                    765: APIRET APIENTRY        DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag);
                    766: 
                    767: APIRET APIENTRY        DosFreeMem(PVOID pb);
                    768: 
                    769: APIRET APIENTRY        DosSetMem(PVOID pb, ULONG cb, ULONG flag);
                    770: 
                    771: APIRET APIENTRY        DosGiveSharedMem(PVOID pb, PID pid, ULONG flag);
                    772: 
                    773: APIRET APIENTRY        DosGetSharedMem(PVOID pb, ULONG flag);
                    774: 
                    775: APIRET APIENTRY        DosGetNamedSharedMem(PPVOID ppb, PSZ pszName, ULONG flag);
                    776: 
                    777: APIRET APIENTRY        DosAllocSharedMem(PPVOID ppb, PSZ pszName, ULONG cb, ULONG flag);
                    778: 
                    779: APIRET APIENTRY        DosQueryMem(PVOID pb, PULONG pcb, PULONG pFlag);
                    780: 
                    781: APIRET APIENTRY        DosSubAlloc(PVOID pbBase, PPVOID ppb, ULONG cb);
                    782: 
                    783: APIRET APIENTRY        DosSubFree(PVOID pbBase, PVOID pb, ULONG cb);
                    784: 
                    785: APIRET APIENTRY        DosSubSet(PVOID pbBase, ULONG flag, ULONG cb);
                    786: 
                    787: APIRET APIENTRY        DosSubUnset(PVOID pbBase);
                    788: 
                    789: #include <bsememf.h>   /* get flags for API                            */
                    790: 
                    791: #endif /* INCL_DOSMEMMGR */
                    792: 
                    793: #if (defined(INCL_DOSSEMAPHORES) || !defined(INCL_NOCOMMON))
                    794: 
                    795: /*
                    796:  *     32-bit Semaphore Support
                    797:  */
                    798: 
                    799: /* Semaphore Attributes */
                    800: 
                    801: #define DC_SEM_SHARED  0x01      /* DosCreateMutex, DosCreateEvent, and     */
                    802:                                  /*   DosCreateMuxWait use it to indicate   */
                    803:                                  /*   whether the semaphore is shared or    */
                    804:                                  /*   private when the PSZ is null          */
                    805: #define DCMW_WAIT_ANY  0x02      /* DosCreateMuxWait option for wait on any */
                    806:                                  /*   event/mutex to occur                  */
                    807: #define DCMW_WAIT_ALL  0x04      /* DosCreateMuxWait option for wait on all */
                    808:                                  /*   events/mutexs to occur                */
                    809: 
                    810: #define SEM_INDEFINITE_WAIT    -1L
                    811: #define SEM_IMMEDIATE_RETURN    0L
                    812: 
                    813: typedef struct _PSEMRECORD {   /* psr */
                    814:     HSEM       hsemCur;
                    815:     ULONG      ulUser;
                    816: } SEMRECORD;
                    817: typedef SEMRECORD      *PSEMRECORD;
                    818: 
                    819: #endif /* common INCL_DOSSEMAPHORES */
                    820: 
                    821: #ifdef INCL_DOSSEMAPHORES
                    822: 
                    823: typedef         ULONG    HMTX;            /* hmtx */
                    824: typedef         HMTX     *PHMTX;
                    825: typedef         ULONG    HEV;             /* hev */
                    826: typedef         HEV      *PHEV;
                    827: typedef         ULONG    HMUX;            /* hmux */
                    828: typedef         HMUX     *PHMUX;
                    829: typedef         VOID FAR *HSEM;           /* hsem */
                    830: typedef         HSEM FAR *PHSEM;
                    831: 
                    832: APIRET APIENTRY        DosCreateEventSem (PSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
                    833: APIRET APIENTRY        DosOpenEventSem (PSZ pszName, PHEV phev);
                    834: APIRET APIENTRY        DosCloseEventSem (HEV hev);
                    835: APIRET APIENTRY        DosResetEventSem (HEV hev, PULONG pulPostCt);
                    836: APIRET APIENTRY        DosPostEventSem (HEV hev);
                    837: APIRET APIENTRY        DosWaitEventSem (HEV hev, ULONG ulTimeout);
                    838: APIRET APIENTRY        DosQueryEventSem (HEV hev, PULONG pulPostCt);
                    839: 
                    840: APIRET APIENTRY        DosCreateMutexSem (PSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 fState);
                    841: APIRET APIENTRY        DosOpenMutexSem (PSZ pszName, PHMTX phmtx);
                    842: APIRET APIENTRY        DosCloseMutexSem (HMTX hmtx);
                    843: APIRET APIENTRY        DosRequestMutexSem (HMTX hmtx, ULONG ulTimeout);
                    844: APIRET APIENTRY        DosReleaseMutexSem (HMTX hmtx);
                    845: APIRET APIENTRY        DosQueryMutexSem (HMTX hmtx, PID *ppid, TID *ptid, PULONG pulCount);
                    846: 
                    847: APIRET APIENTRY        DosCreateMuxWaitSem (PSZ pszName, PHMUX phmux, ULONG cSemRec, PSEMRECORD pSemRec, ULONG flAttr);
                    848: APIRET APIENTRY        DosOpenMuxWaitSem (PSZ pszName, PHMUX phmux);
                    849: APIRET APIENTRY        DosCloseMuxWaitSem (HMUX hmux);
                    850: APIRET APIENTRY        DosWaitMuxWaitSem (HMUX hmux, ULONG ulTimeout, PULONG pulUser);
                    851: APIRET APIENTRY        DosAddMuxWaitSem (HMUX hmux, PSEMRECORD pSemRec);
                    852: APIRET APIENTRY        DosDeleteMuxWaitSem (HMUX hmux, HSEM hSem);
                    853: APIRET APIENTRY        DosQueryMuxWaitSem (HMUX hmux, PULONG pcSemRec, PSEMRECORD pSemRec, PULONG pflAttr);
                    854: 
                    855: #endif /* INCL_DOSSEMAPHORES */
                    856: 
                    857: #if (defined(INCL_DOSDATETIME) || !defined(INCL_NOCOMMON))
                    858: 
                    859: /*** Time support */
                    860: 
                    861: typedef struct _DATETIME {    /* date */
                    862:     UCHAR   hours;
                    863:     UCHAR   minutes;
                    864:     UCHAR   seconds;
                    865:     UCHAR   hundredths;
                    866:     UCHAR   day;
                    867:     UCHAR   month;
                    868:     USHORT  year;
                    869:     SHORT   timezone;
                    870:     UCHAR   weekday;
                    871: } DATETIME;
                    872: typedef DATETIME       *PDATETIME;
                    873: 
                    874: APIRET APIENTRY        DosGetDateTime(PDATETIME pdt);
                    875: 
                    876: APIRET APIENTRY        DosSetDateTime(PDATETIME pdt);
                    877: 
                    878: #endif /* common INCL_DOSDATETIME */
                    879: 
                    880: #ifdef INCL_DOSDATETIME
                    881: 
                    882: /* XLATOFF */
                    883: #define DosTimerAsync  DosAsyncTimer
                    884: #define DosTimerStart  DosStartTimer
                    885: #define DosTimerStop   DosStopTimer
                    886: /* XLATON */
                    887: 
                    888: typedef SHANDLE HTIMER;
                    889: typedef HTIMER *PHTIMER;
                    890: 
                    891: APIRET APIENTRY        DosAsyncTimer(ULONG msec, HSEM hsem, PHTIMER phtimer);
                    892: 
                    893: APIRET APIENTRY        DosStartTimer(ULONG msec, HSEM hsem, PHTIMER phtimer);
                    894: 
                    895: APIRET APIENTRY        DosStopTimer(HTIMER htimer);
                    896: 
                    897: #endif /* INCL_DOSDATETIME */
                    898: 
                    899: 
                    900: /*** Module manager */
                    901: 
                    902: #ifdef INCL_DOSMODULEMGR
                    903: 
                    904: /* XLATOFF */
                    905: #define DosGetProcAddr         DosQueryProcAddr
                    906: #define DosGetModHandle                DosQueryModuleHandle
                    907: #define DosGetModName          DosQueryModuleName
                    908: /* XLATON */
                    909: 
                    910: APIRET APIENTRY        DosLoadModule(PSZ pszName, ULONG cbName, PSZ pszModname, PHMODULE phmod);
                    911: 
                    912: APIRET APIENTRY        DosFreeModule(HMODULE hmod);
                    913: 
                    914: APIRET APIENTRY        DosQueryProcAddr(HMODULE hmod, ULONG ordinal, PSZ pszName,PFN* ppfn);
                    915: 
                    916: APIRET APIENTRY        DosQueryModuleHandle(PSZ pszModname, PHMODULE phmod);
                    917: 
                    918: APIRET APIENTRY        DosQueryModuleName(HMODULE hmod, ULONG cbName, PCHAR pch);
                    919: 
                    920: #define        PT_16BIT        0
                    921: #define        PT_32BIT        1
                    922: 
                    923: APIRET APIENTRY        DosQueryProcType(HMODULE hmod, ULONG ordinal, PSZ pszName, PULONG pulproctype);
                    924: 
                    925: #endif /* INCL_DOSMODULEMGR */
                    926: 
                    927: #if (defined(INCL_DOSRESOURCES) || !defined(INCL_NOCOMMON))
                    928: 
                    929: /*** Resource support */
                    930: 
                    931: /* Predefined resource types */
                    932: 
                    933: #define RT_POINTER     1   /* mouse pointer shape */
                    934: #define RT_BITMAP      2   /* bitmap */
                    935: #define RT_MENU                3   /* menu template */
                    936: #define RT_DIALOG      4   /* dialog template */
                    937: #define RT_STRING      5   /* string tables */
                    938: #define RT_FONTDIR     6   /* font directory */
                    939: #define RT_FONT                7   /* font */
                    940: #define RT_ACCELTABLE  8   /* accelerator tables */
                    941: #define RT_RCDATA      9   /* binary data */
                    942: #define RT_MESSAGE     10  /* error msg     tables */
                    943: #define RT_DLGINCLUDE  11  /* dialog include file name */
                    944: #define RT_VKEYTBL     12  /* key to vkey tables */
                    945: #define RT_KEYTBL      13  /* key to UGL tables */
                    946: #define RT_CHARTBL     14  /* glyph to character tables */
                    947: #define RT_DISPLAYINFO 15  /* screen display information */
                    948: 
                    949: #define RT_FKASHORT    16  /* function key area short form */
                    950: #define RT_FKALONG     17  /* function key area long form */
                    951: 
                    952: #define RT_HELPTABLE   18  /* Help table for Cary Help manager */
                    953: #define RT_HELPSUBTABLE 19  /* Help subtable for Cary Help manager */
                    954: 
                    955: #define RT_FDDIR       20  /* DBCS uniq/font driver directory */
                    956: #define RT_FD          21  /* DBCS uniq/font driver */
                    957: 
                    958: #define RT_MAX         22  /* 1st unused Resource Type */
                    959: 
                    960: 
                    961: #define RF_ORDINALID   0x80000000L     /* ordinal id flag in resource table */
                    962: 
                    963: #endif /* common INCL_DOSRESOURCES */
                    964: 
                    965: #ifdef INCL_DOSRESOURCES
                    966: 
                    967: /* XLATOFF */
                    968: #define DosGetResource2 DosGetResource
                    969: /* XLATON */
                    970: 
                    971: APIRET APIENTRY        DosGetResource(HMODULE hmod, ULONG idType, ULONG idName, PPVOID ppb);
                    972: 
                    973: APIRET APIENTRY        DosFreeResource(PVOID pb);
                    974: 
                    975: APIRET APIENTRY        DosQueryResourceSize(HMODULE hmod, ULONG idt, ULONG idn, PULONG pulsize);
                    976: 
                    977: #endif /* INCL_DOSRESOURCES */
                    978: 
                    979: 
                    980: /*** NLS Support */
                    981: 
                    982: #ifdef INCL_DOSNLS
                    983: 
                    984: typedef struct _COUNTRYCODE { /* ctryc */
                    985:     ULONG      country;
                    986:     ULONG      codepage;
                    987: } COUNTRYCODE;
                    988: typedef COUNTRYCODE    *PCOUNTRYCODE;
                    989: 
                    990: typedef struct _COUNTRYINFO { /* ctryi */
                    991:     ULONG      country;
                    992:     ULONG      codepage;
                    993:     ULONG      fsDateFmt;
                    994:     CHAR       szCurrency[5];
                    995:     CHAR       szThousandsSeparator[2];
                    996:     CHAR       szDecimal[2];
                    997:     CHAR       szDateSeparator[2];
                    998:     CHAR       szTimeSeparator[2];
                    999:     UCHAR      fsCurrencyFmt;
                   1000:     UCHAR      cDecimalPlace;
                   1001:     UCHAR      fsTimeFmt;
                   1002:     USHORT     abReserved1[2];
                   1003:     CHAR       szDataSeparator[2];
                   1004:     USHORT     abReserved2[5];
                   1005: } COUNTRYINFO;
                   1006: typedef COUNTRYINFO    *PCOUNTRYINFO;
                   1007: 
                   1008: /* XLATOFF */
                   1009: #define DosGetCtryInfo DosQueryCtryInfo
                   1010: #define DosGetDBCSEv   DosQueryDBCSEnv
                   1011: #define DosCaseMap     DosMapCase
                   1012: #define DosGetCollate  DosQueryCollate
                   1013: #define DosGetCp       DosQueryCp
                   1014: #define DosSetProcCp   DosSetProcessCp
                   1015: /* XLATON */
                   1016: 
                   1017: APIRET APIENTRY        DosQueryCtryInfo(ULONG cb, PCOUNTRYCODE pcc, PCOUNTRYINFO pci, PULONG pcbActual);
                   1018: 
                   1019: APIRET APIENTRY        DosQueryDBCSEnv(ULONG cb, PCOUNTRYCODE pcc, PCHAR pBuf);
                   1020: 
                   1021: APIRET APIENTRY        DosMapCase(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch);
                   1022: 
                   1023: APIRET APIENTRY        DosQueryCollate(ULONG cb, PCOUNTRYCODE pcc, PCHAR pch, PULONG pcch);
                   1024: 
                   1025: APIRET APIENTRY        DosQueryCp(ULONG cb, PULONG arCP, PULONG pcCP);
                   1026: 
                   1027: APIRET APIENTRY        DosSetProcessCp(ULONG cp);
                   1028: 
                   1029: #endif /* INCL_DOSNLS */
                   1030: 
                   1031: 
                   1032: /*** Signal support */
                   1033: 
                   1034: #ifdef INCL_DOSSIGNALS
                   1035: 
                   1036: /* DosSetSigExceptionFocus codes */
                   1037: 
                   1038: #define        SIG_UNSETFOCUS 0
                   1039: #define        SIG_SETFOCUS 1
                   1040: 
                   1041: #include <bsexcpt.h>
                   1042: 
                   1043: APIRET APIENTRY        DosSetExceptionHandler(PEHS phandler);
                   1044: 
                   1045: APIRET APIENTRY        DosUnsetExceptionHandler(PEHS phandler);
                   1046: 
                   1047: APIRET APIENTRY        DosRaiseException(PXCPT pexcept);
                   1048: 
                   1049: APIRET APIENTRY        DosSendSignalException(PID pid, ULONG exception);
                   1050: 
                   1051: APIRET APIENTRY        DosUnwindException(PEHS phandler);
                   1052: 
                   1053: APIRET APIENTRY        DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes);
                   1054: 
                   1055: APIRET APIENTRY        DosEnterMustComplete(PULONG pulNesting);
                   1056: 
                   1057: APIRET APIENTRY        DosExitMustComplete(PULONG pulNesting);
                   1058: 
                   1059: #endif /* INCL_DOSSIGNALS */
                   1060: 
                   1061: 
                   1062: /*** Pipe and queue support */
                   1063: 
                   1064: #ifdef INCL_DOSQUEUES
                   1065: #if (defined(INCL_DOSFILEMGR) || !defined(INCL_NOCOMMON))
                   1066: 
                   1067: typedef SHANDLE HQUEUE;         /* hq */
                   1068: typedef HQUEUE *PHQUEUE;
                   1069: typedef struct _REQUESTDATA {  /* reqqdata */
                   1070:     PID                pid;
                   1071:     ULONG      ulData;
                   1072: } REQUESTDATA;
                   1073: typedef REQUESTDATA    *PREQUESTDATA;
                   1074: 
                   1075: #define        QUE_FIFO        0L
                   1076: #define        QUE_LIFO        1L
                   1077: #define        QUE_PRIORITY    2L
                   1078: 
                   1079: /* XLATOFF */
                   1080: #define DosMakePipe    DosCreatePipe
                   1081: /* XLATON */
                   1082: 
                   1083: APIRET APIENTRY        DosCreatePipe(PHFILE phfRead, PHFILE phfWrite, ULONG cb);
                   1084: 
                   1085: APIRET APIENTRY        DosCloseQueue(HQUEUE hq);
                   1086: 
                   1087: APIRET APIENTRY        DosCreateQueue(PHQUEUE phq, ULONG priority, PSZ pszName);
                   1088: 
                   1089: APIRET APIENTRY        DosOpenQueue(PPID ppid, PHQUEUE phq, PSZ pszName);
                   1090: 
                   1091: APIRET APIENTRY        DosPeekQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData, PPVOID ppbuf, PULONG element, BOOL32 nowait, PBYTE ppriority, HSEM hsem);
                   1092: 
                   1093: APIRET APIENTRY        DosPurgeQueue(HQUEUE hq);
                   1094: 
                   1095: APIRET APIENTRY        DosQueryQueue(HQUEUE hq, PULONG pcbEntries);
                   1096: 
                   1097: APIRET APIENTRY        DosReadQueue(HQUEUE hq, PREQUESTDATA pRequest, PULONG pcbData, PPVOID ppbuf, ULONG element, BOOL32 wait, PBYTE ppriority, HSEM hsem);
                   1098: 
                   1099: APIRET APIENTRY        DosWriteQueue(HQUEUE hq, ULONG request, ULONG cbData, PVOID pbData, ULONG priority);
                   1100: 
                   1101: #else /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
                   1102: #error PHFILE not defined - define INCL_DOSFILEMGR or undefine INCL_NOCOMMON
                   1103: #endif /* INCL_DOSFILEMGR || !INCL_NOCOMMON */
                   1104: #endif /* INCL_DOSQUEUES */
                   1105: 
                   1106: #ifdef INCL_DOSMISC
                   1107: 
                   1108: /* definitions for DosSearchPath control word */
                   1109: #define DSP_IMPLIEDCUR         1 /* current dir will be searched first */
                   1110: #define DSP_PATHREF            2 /* from env.variable */
                   1111: #define DSP_IGNORENETERR       4 /* ignore net errs & continue search */
                   1112: 
                   1113: /* indices for DosQuerySysInfo */
                   1114: #define        QSV_MAX_PATH_LENGTH     1
                   1115: #define        Q_MAX_PATH_LENGTH       QSV_MAX_PATH_LENGTH
                   1116: #define        QSV_MAX_TEXT_SESSIONS   2
                   1117: #define        QSV_MAX_PM_SESSIONS     3
                   1118: #define        QSV_MAX_VDM_SESSIONS    4
                   1119: #define        QSV_BOOT_DRIVE          5       /* 1=A, 2=B, etc. */
                   1120: #define        QSV_DYN_PRI_VARIATION   6       /* 0=Absolute, 1=Dynamic */
                   1121: #define        QSV_MAX_WAIT            7       /* seconds */
                   1122: #define        QSV_MIN_SLICE           8       /* milli seconds */
                   1123: #define        QSV_MAX_SLICE           9       /* milli seconds */
                   1124: #define        QSV_PAGE_SIZE           10
                   1125: #define        QSV_VERSION_MAJOR       11
                   1126: #define        QSV_VERSION_MINOR       12
                   1127: #define        QSV_VERSION_REVISION    13      /* Revision letter */
                   1128: #define        QSV_MS_COUNT            14      /* Free running millisecond counter */
                   1129: #define        QSV_TIME_LOW            15      /* Low dword of time in seconds */
                   1130: #define        QSV_TIME_HIGH           16      /* High dword of time in seconds */
                   1131: #define        QSV_TOTPHYSMEM          17      /* Physical memory on system */
                   1132: #define        QSV_TOTRESMEM           18      /* Resident memory on system */
                   1133: #define        QSV_TOTAVAILMEM         19      /* Available memory for all processes */
                   1134: #define        QSV_MAXPRMEM            20      /* Avail private mem for calling proc */
                   1135: #define        QSV_MAXSHMEM            21      /* Avail shared mem for calling proc */
                   1136: #define        QSV_TIMER_INTERVAL      22      /* Timer interval in tenths of ms */
                   1137: #define        QSV_MAX                 QSV_TIMER_INTERVAL
                   1138: 
                   1139: /* definitions for DosError - combine with | */
                   1140: #define        FERR_DISABLEHARDERR     0x00000000L     /* disable hard error popups */
                   1141: #define        FERR_ENABLEHARDERR      0x00000001L     /* enable hard error popups */
                   1142: #define        FERR_ENABLEEXCEPTION    0x00000000L     /* enable exception popups */
                   1143: #define        FERR_DISABLEEXCEPTION   0x00000002L     /* disable exception popups */
                   1144: 
                   1145: /* XLATOFF */
                   1146: #define DosInsMessage  DosInsertMessage
                   1147: #define DosQSysInfo    DosQuerySysInfo
                   1148: /* XLATON */
                   1149: 
                   1150: APIRET APIENTRY        DosError(ULONG error);
                   1151: 
                   1152: APIRET APIENTRY        DosGetMessage(PCHAR* pTable, ULONG cTable, PCHAR pBuf, ULONG cbBuf, ULONG msgnumber, PSZ pszFile, PULONG pcbMsg);
                   1153: 
                   1154: APIRET APIENTRY        DosErrClass(ULONG code, PULONG pClass, PULONG pAction, PULONG pLocus);
                   1155: 
                   1156: APIRET APIENTRY        DosInsertMessage(PCHAR* pTable, ULONG cTable, PSZ pszMsg, ULONG cbMsg, PCHAR pBuf, ULONG cbBuf, PULONG pcbMsg);
                   1157: 
                   1158: APIRET APIENTRY        DosPutMessage(HFILE hfile, ULONG cbMsg, PCHAR pBuf);
                   1159: 
                   1160: APIRET APIENTRY        DosQuerySysInfo(ULONG iStart, ULONG iLast, PVOID pBuf, ULONG cbBuf);
                   1161: 
                   1162: APIRET APIENTRY        DosScanEnv(PSZ pszName, PSZ *ppszValue);
                   1163: 
                   1164: APIRET APIENTRY        DosSearchPath(ULONG flag, PSZ pszPathOrName, PSZ pszFilename, PBYTE pBuf, ULONG cbBuf);
                   1165: 
                   1166: APIRET APIENTRY        DosQueryMessageCP(PCHAR pb, ULONG cb, PSZ pszFilename, PULONG cbBuf);
                   1167: 
                   1168: APIRET APIENTRY        DosDynamicTrace(ULONG lCmd, PBYTE preqUser, PBYTE presUser);
                   1169: 
                   1170: #endif /* INCL_DOSMISC */
                   1171: 
                   1172: 
                   1173: /*** Session manager support */
                   1174: 
                   1175: #ifdef INCL_DOSSESMGR
                   1176: 
                   1177: typedef struct _STARTDATA {   /* stdata */
                   1178:     USHORT  Length;
                   1179:     USHORT  Related;
                   1180:     USHORT  FgBg;
                   1181:     USHORT  TraceOpt;
                   1182:     PSZ            PgmTitle;
                   1183:     PSZ            PgmName;
                   1184:     PBYTE   PgmInputs;
                   1185:     PBYTE   TermQ;
                   1186:     PBYTE   Environment;
                   1187:     USHORT  InheritOpt;
                   1188:     USHORT  SessionType;
                   1189:     PSZ            IconFile;
                   1190:     ULONG   PgmHandle;
                   1191:     USHORT  PgmControl;
                   1192:     USHORT  InitXPos;
                   1193:     USHORT  InitYPos;
                   1194:     USHORT  InitXSize;
                   1195:     USHORT  InitYSize;
                   1196:     USHORT  Reserved;
                   1197:     PSZ            ObjectBuffer;
                   1198:     ULONG   ObjectBuffLen;
                   1199: } STARTDATA;
                   1200: typedef STARTDATA      *PSTARTDATA;
                   1201: 
                   1202: #define        SSF_RELATED_INDEPENDENT 0
                   1203: #define        SSF_RELATED_CHILD       1
                   1204: 
                   1205: #define        SSF_FGBG_FORE           0
                   1206: #define        SSF_FGBG_BACK           1
                   1207: 
                   1208: #define        SSF_TRACEOPT_NONE       0
                   1209: #define        SSF_TRACEOPT_TRACE      1
                   1210: #define        SSF_TRACEOPT_TRACEALL   2
                   1211: 
                   1212: #define        SSF_INHERTOPT_SHELL     0
                   1213: #define        SSF_INHERTOPT_PARENT    1
                   1214: 
                   1215: /* note that these types are identical to those in pmshl.h for PROG_* */
                   1216: #define        SSF_TYPE_DEFAULT        0
                   1217: #define        SSF_TYPE_FULLSCREEN     1
                   1218: #define        SSF_TYPE_WINDOWABLEVIO  2
                   1219: #define        SSF_TYPE_PM             3
                   1220: #define        SSF_TYPE_VDM            4
                   1221: #define        SSF_TYPE_GROUP          5
                   1222: #define        SSF_TYPE_DLL            6
                   1223: #define        SSF_TYPE_WINDOWEDVDM    7
                   1224: #define        SSF_TYPE_PDD            8
                   1225: #define        SSF_TYPE_VDD            9
                   1226: 
                   1227: /* note that these flags are identical to those in pmshl.h for SHE_* */
                   1228: #define        SSF_CONTROL_VISIBLE     0x0000
                   1229: #define        SSF_CONTROL_INVISIBLE   0x0001
                   1230: #define        SSF_CONTROL_MAXIMIZE    0x0002
                   1231: #define        SSF_CONTROL_MINIMIZE    0x0004
                   1232: #define        SSF_CONTROL_NOAUTOCLOSE 0x0008
                   1233: #define        SSF_CONTROL_SETPOS      0x8000
                   1234: 
                   1235: typedef struct _STATUSDATA { /* stsdata */
                   1236:     USHORT Length;
                   1237:     USHORT SelectInd;
                   1238:     USHORT BondInd;
                   1239: } STATUSDATA;
                   1240: typedef STATUSDATA     *PSTATUSDATA;
                   1241: 
                   1242: /* XLATOFF */
                   1243: #define DosQAppType    DosQueryAppType
                   1244: /* XLATON */
                   1245: 
                   1246: APIRET APIENTRY        DosStartSession(PSTARTDATA psd, PULONG pidSession, PPID ppid);
                   1247: 
                   1248: APIRET APIENTRY        DosSetSession(ULONG idSession, PSTATUSDATA psd);
                   1249: 
                   1250: APIRET APIENTRY        DosSelectSession(ULONG idSession);
                   1251: 
                   1252: APIRET APIENTRY        DosStopSession(ULONG scope, ULONG idSession);
                   1253: 
                   1254: APIRET APIENTRY        DosQueryAppType(PSZ pszName, PULONG pFlags);
                   1255: 
                   1256: #endif /* INCL_DOSSESMGR */
                   1257: 
                   1258: #if (defined(INCL_DOSSESMGR) || defined(INCL_DOSFILEMGR))
                   1259: 
                   1260: /* AppType returned in by DosQueryAppType in pFlags as follows         */
                   1261: #define        FAPPTYP_NOTSPEC         0x0000
                   1262: #define        FAPPTYP_NOTWINDOWCOMPAT 0x0001
                   1263: #define        FAPPTYP_WINDOWCOMPAT    0x0002
                   1264: #define        FAPPTYP_WINDOWAPI       0x0003
                   1265: #define        FAPPTYP_BOUND           0x0008
                   1266: #define        FAPPTYP_DLL             0x0010
                   1267: #define        FAPPTYP_DOS             0x0020
                   1268: #define        FAPPTYP_PHYSDRV         0x0040  /* physical device driver       */
                   1269: #define        FAPPTYP_VIRTDRV         0x0080  /* virtual device driver        */
                   1270: #define        FAPPTYP_PROTDLL         0x0100  /* 'protected memory' dll       */
                   1271: #define        FAPPTYP_32BIT           0x4000
                   1272: #define        FAPPTYP_EXETYPE         FAPPTYP_WINDOWAPI
                   1273: 
                   1274: #define FAPPTYP_RESERVED       ~(FAPPTYP_WINDOWAPI | FAPPTYP_BOUND | FAPPTYP_DLL | FAPPTYP_DOS | FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV | FAPPTYP_PROTDLL | FAPPTYP_32BIT)
                   1275: 
                   1276: #ifdef INCL_DOSFILEMGR
                   1277: 
                   1278: #define EAT_APPTYP_PMAPI       0x00            /* Uses PM API */
                   1279: #define EAT_APPTYP_DOS         0x01            /* DOS APP */
                   1280: #define EAT_APPTYP_PMW         0x02            /* Window compatible */
                   1281: #define EAT_APPTYP_NOPMW       0x03            /* Not Window compatible */
                   1282: #define EAT_APPTYP_EXETYPE     0x03            /* EXE type mask */
                   1283: #define EAT_APPTYP_RESERVED    ~(EAT_APPTYP_EXETYPE)
                   1284: 
                   1285: #endif /* INCL_DOSFILEMGR */
                   1286: 
                   1287: #endif /* INCL_DOSSESMGR || INCL_DOSFILEMGR */
                   1288: 
                   1289: 
                   1290: /*** Device support */
                   1291: 
                   1292: #ifdef INCL_DOSDEVICES
                   1293: 
                   1294: /* XLATOFF */
                   1295: #define DosDevIOCtl2   DosDevIOCtl
                   1296: /* XLATON */
                   1297: 
                   1298: APIRET APIENTRY        DosDevConfig(PVOID pdevinfo, ULONG item);
                   1299: #define        DEVINFO_PRINTER         0       /* Number of printers attached */
                   1300: #define        DEVINFO_RS232           1       /* Number of RS232 ports */
                   1301: #define        DEVINFO_FLOPPY          2       /* Number of diskette drives */
                   1302: #define        DEVINFO_COPROCESSOR     3       /* Presence of math coprocessor */
                   1303: #define        DEVINFO_SUBMODEL        4       /* PC Submodel Type */
                   1304: #define        DEVINFO_MODEL           5       /* PC Model Type */
                   1305: #define        DEVINFO_ADAPTER         6       /* Primary display adapter type */
                   1306: #define        DEVINFO_COPROCESSORTYPE 7       /* Type of coprocessor functionality */
                   1307: 
                   1308: APIRET  APIENTRY        DosDevIOCtl(HFILE hDevice, ULONG category, ULONG function, PVOID pParams, ULONG cbParmLenMax, PULONG pcbParmLen, PVOID pData, ULONG cbDataLenMax, PULONG pcbDataLen);
                   1309: 
                   1310: 
                   1311: APIRET APIENTRY        DosPhysicalDisk(ULONG function, PVOID pBuf, ULONG cbBuf, PVOID pParams, ULONG cbParams);
                   1312: #define        INFO_COUNT_PARTITIONABLE_DISKS  1       /* # of partitionable disks */
                   1313: #define        INFO_GETIOCTLHANDLE             2       /* Obtain handle            */
                   1314: #define        INFO_FREEIOCTLHANDLE            3       /* Release handle           */
                   1315: 
                   1316: #endif /* INCL_DOSDEVICES */
                   1317: 
                   1318: 
                   1319: /*** DosNamedPipes API Support */
                   1320: 
                   1321: #ifdef INCL_DOSNMPIPES
                   1322: 
                   1323: /*** Data structures used with named pipes ***/
                   1324: 
                   1325: typedef SHANDLE HPIPE;    /* hp */
                   1326: typedef HPIPE  *PHPIPE;
                   1327: 
                   1328: typedef struct _AVAILDATA {            /* AVAILDATA */
                   1329:     USHORT     cbpipe;                 /* bytes left in the pipe */
                   1330:     USHORT     cbmessage;              /* bytes left in the current message */
                   1331: } AVAILDATA;
                   1332: typedef AVAILDATA FAR *PAVAILDATA;
                   1333: 
                   1334: typedef struct _PIPEINFO {             /* nmpinf */
                   1335:     USHORT cbOut;                      /* length of outgoing I/O buffer */
                   1336:     USHORT cbIn;                       /* length of incoming I/O buffer */
                   1337:     BYTE   cbMaxInst;                  /* maximum number of instances   */
                   1338:     BYTE   cbCurInst;                  /* current number of instances   */
                   1339:     BYTE   cbName;                     /* length of pipe name           */
                   1340:     CHAR   szName[1];                  /* start of name                 */
                   1341: } PIPEINFO;
                   1342: typedef PIPEINFO FAR *PPIPEINFO;
                   1343: 
                   1344: typedef struct _PIPESEMSTATE { /* nmpsmst */
                   1345:     BYTE   fStatus;            /* type of record, 0 = EOI, 1 = read ok, */
                   1346:                                /* 2 = write ok, 3 = pipe closed         */
                   1347:     BYTE   fFlag;              /* additional info, 01 = waiting thread  */
                   1348:     USHORT usKey;              /* user's key value                      */
                   1349:     USHORT usAvail;            /* available data/space if status = 1/2  */
                   1350: } PIPESEMSTATE;
                   1351: typedef PIPESEMSTATE FAR *PPIPESEMSTATE;
                   1352: 
                   1353: #define        NP_INDEFINITE_WAIT      -1
                   1354: #define        NP_DEFAULT_WAIT         0L
                   1355: 
                   1356: /* DosPeekNmPipe() pipe states */
                   1357: 
                   1358: #define        NP_STATE_DISCONNECTED   0x0001
                   1359: #define        NP_STATE_LISTENING      0x0002
                   1360: #define        NP_STATE_CONNECTED      0x0003
                   1361: #define        NP_STATE_CLOSING        0x0004
                   1362: 
                   1363: /* DosCreateNPipe open modes */
                   1364: 
                   1365: #define NP_ACCESS_INBOUND       0x0000
                   1366: #define NP_ACCESS_OUTBOUND      0x0001
                   1367: #define NP_ACCESS_DUPLEX        0x0002
                   1368: #define NP_INHERIT              0x0000
                   1369: #define NP_NOINHERIT            0x0080
                   1370: #define NP_WRITEBEHIND          0x0000
                   1371: #define NP_NOWRITEBEHIND        0x4000
                   1372: 
                   1373: /* DosCreateNPipe and DosQueryNPHState state */
                   1374: 
                   1375: #define NP_READMODE_BYTE        0x0000
                   1376: #define NP_READMODE_MESSAGE     0x0100
                   1377: #define NP_TYPE_BYTE            0x0000
                   1378: #define NP_TYPE_MESSAGE         0x0400
                   1379: #define NP_END_CLIENT           0x0000
                   1380: #define NP_END_SERVER           0x4000
                   1381: #define NP_WAIT                 0x0000
                   1382: #define NP_NOWAIT               0x8000
                   1383: #define NP_UNLIMITED_INSTANCES  0x00FF
                   1384: 
                   1385: /* XLATOFF */
                   1386: #define DosCallNmPipe  DosCallNPipe
                   1387: #define DosConnectNmPipe       DosConnectNPipe
                   1388: #define DosDisConnectNmPipe    DosDisConnectNPipe
                   1389: #define DosMakeNmPipe  DosCreateNPipe
                   1390: #define DosPeekNmPipe  DosPeekNPipe
                   1391: #define DosQNmPHandState       DosQueryNPHState
                   1392: #define DosQNmPipeInfo DosQueryNPipeInfo
                   1393: #define DosQNmPipeSemState     DosQueryNPipeSemState
                   1394: #define DosRawReadNmPipe       DosRawReadNPipe
                   1395: #define DosRawWriteNmPipe      DosRawWriteNPipe
                   1396: #define DosSetNmPHandState     DosSetNPHState
                   1397: #define DosSetNmPipeSem DosSetNPipeSem
                   1398: #define DosTransactNmPipe      DosTransactNPipe
                   1399: #define DosWaitNmPipe  DosWaitNPipe
                   1400: /* XLATON */
                   1401: 
                   1402: APIRET APIENTRY        DosCallNPipe(PSZ pszName, PVOID pInbuf, ULONG cbIn, PVOID pOutbuf, ULONG cbOut, PULONG pcbActual, ULONG msec);
                   1403: 
                   1404: APIRET APIENTRY        DosConnectNPipe(HPIPE hpipe);
                   1405: 
                   1406: APIRET APIENTRY        DosDisConnectNPipe(HPIPE hpipe);
                   1407: 
                   1408: APIRET APIENTRY        DosCreateNPipe(PSZ pszName, PHPIPE pHpipe, ULONG openmode, ULONG pipemode, ULONG cbInbuf, ULONG cbOutbuf, ULONG msec);
                   1409: 
                   1410: APIRET APIENTRY        DosPeekNPipe(HPIPE hpipe, PVOID pBuf, ULONG cbBuf, PULONG pcbActual, PAVAILDATA pAvail, PULONG pState);
                   1411: 
                   1412: APIRET APIENTRY        DosQueryNPHState(HPIPE hpipe, PULONG pState);
                   1413: 
                   1414: APIRET APIENTRY        DosQueryNPipeInfo(HPIPE hpipe, ULONG infolevel, PVOID pBuf, ULONG cbBuf);
                   1415: 
                   1416: APIRET APIENTRY        DosQueryNPipeSemState(HSEM hsem, PPIPESEMSTATE pnpss, ULONG cbBuf);
                   1417: 
                   1418: APIRET APIENTRY        DosRawReadNPipe(PSZ pszName, ULONG cb, PULONG pLen, PVOID pBuf);
                   1419: 
                   1420: APIRET APIENTRY        DosRawWriteNPipe(PSZ pszName, ULONG cb);
                   1421: 
                   1422: APIRET APIENTRY        DosSetNPHState(HPIPE hpipe, ULONG state);
                   1423: 
                   1424: APIRET APIENTRY        DosSetNPipeSem(HPIPE hpipe, HSEM hsem, ULONG key);
                   1425: 
                   1426: APIRET APIENTRY        DosTransactNPipe(HPIPE hpipe, PVOID pOutbuf, ULONG cbOut, PVOID pInbuf, ULONG cbIn, PULONG pcbRead);
                   1427: 
                   1428: APIRET APIENTRY        DosWaitNPipe(PSZ pszName, ULONG msec);
                   1429: 
                   1430: /* values in fStatus */
                   1431: #define NPSS_EOI                  0     /* End Of Information    */
                   1432: #define NPSS_RDATA                1     /* read data available   */
                   1433: #define NPSS_WSPACE               2     /* write space available */
                   1434: #define NPSS_CLOSE                3     /* pipe in CLOSING state */
                   1435: 
                   1436: /* values in npss_flag */
                   1437: #define NPSS_WAIT                 0x01  /* waiting thread on end of pipe */
                   1438: 
                   1439: /* defined bits in pipe mode */
                   1440: #define NP_NBLK                           0x8000 /* non-blocking read/write */
                   1441: #define NP_SERVER                 0x4000 /* set if server end       */
                   1442: #define NP_WMESG                  0x0400 /* write messages          */
                   1443: #define NP_RMESG                  0x0100 /* read as messages        */
                   1444: #define NP_ICOUNT                 0x00FF /* instance count field    */
                   1445: 
                   1446: 
                   1447: /*     Named pipes may be in one of several states depending on the actions
                   1448:  *     that have been taken on it by the server end and client end.  The
                   1449:  *     following state/action table summarizes the valid state transitions:
                   1450:  *
                   1451:  *     Current state           Action                  Next state
                   1452:  *
                   1453:  *      <none>             server DosMakeNmPipe        DISCONNECTED
                   1454:  *      DISCONNECTED       server connect              LISTENING
                   1455:  *      LISTENING          client open                 CONNECTED
                   1456:  *      CONNECTED          server disconn              DISCONNECTED
                   1457:  *      CONNECTED          client close                CLOSING
                   1458:  *      CLOSING            server disconn              DISCONNECTED
                   1459:  *      CONNECTED          server close                CLOSING
                   1460:  *      <any other>        server close                <pipe deallocated>
                   1461:  *
                   1462:  *     If a server disconnects his end of the pipe, the client end will enter a
                   1463:  *     special state in which any future operations (except close) on the file
                   1464:  *     descriptor associated with the pipe will return an error.
                   1465:  */
                   1466: 
                   1467: /*
                   1468:  *     Values for named pipe state
                   1469:  */
                   1470: 
                   1471: #define NP_DISCONNECTED                   1    /* after pipe creation or Disconnect */
                   1472: #define NP_LISTENING              2    /* after DosNmPipeConnect            */
                   1473: #define NP_CONNECTED              3    /* after Client open                 */
                   1474: #define NP_CLOSING                4    /* after Client or Server close      */
                   1475: 
                   1476: 
                   1477: #endif /* INCL_DOSNMPIPES */
                   1478: 
                   1479: /*** DosProfile API support */
                   1480: 
                   1481: #ifdef INCL_DOSPROFILE
                   1482: 
                   1483: /* DosProfile ordinal number */
                   1484: 
                   1485: #define PROF_ORDINAL    133
                   1486: 
                   1487: /* DosProfile usType */
                   1488: 
                   1489: #define PROF_SYSTEM     0
                   1490: #define PROF_USER       1
                   1491: #define PROF_USEDD      2
                   1492: #define PROF_KERNEL     4
                   1493: #define PROF_VERBOSE    8
                   1494: #define PROF_ENABLE    16
                   1495: 
                   1496: /* DosProfile usFunc */
                   1497: 
                   1498: #define PROF_ALLOC      0
                   1499: #define PROF_CLEAR      1
                   1500: #define PROF_ON                 2
                   1501: #define PROF_OFF        3
                   1502: #define PROF_DUMP       4
                   1503: #define PROF_FREE       5
                   1504: 
                   1505: /* DosProfile tic count granularity (DWORD) */
                   1506: 
                   1507: #define PROF_SHIFT      2
                   1508: 
                   1509: /* DosProfile module name string length */
                   1510: 
                   1511: #define PROF_MOD_NAME_SIZE   10
                   1512: 
                   1513: /* DosProfile error code for end of data */
                   1514: 
                   1515: #define PROF_END_OF_DATA     13
                   1516: 
                   1517: #endif /* INCL_DOSPROFILE */
                   1518: 
                   1519: 
                   1520: /*** Virtual DOS Machine API support */
                   1521: 
                   1522: #ifdef INCL_DOSMVDM
                   1523: 
                   1524: typedef LHANDLE          HVDD;     /* hvdd */
                   1525: typedef HVDD FAR *PHVDD;    /* phvdd */
                   1526: 
                   1527: APIRET APIENTRY DosOpenVDD(PSZ pszVDD, PHVDD phvdd);
                   1528: 
                   1529: APIRET APIENTRY DosRequestVDD(HVDD hvdd, SGID sgid, ULONG cmd,
                   1530:                               ULONG cbInput, PVOID pInput,
                   1531:                               ULONG cbOutput, PVOID pOutput);
                   1532: 
                   1533: APIRET APIENTRY DosCloseVDD(HVDD hvdd);
                   1534: 
                   1535: APIRET APIENTRY DosQueryDOSProperty(SGID sgid, PSZ pszName,
                   1536:                                     ULONG cb, PSZ pch);
                   1537: 
                   1538: APIRET APIENTRY DosSetDOSProperty(SGID sgid, PSZ pszName,
                   1539:                                   ULONG cb, PSZ pch);
                   1540: #endif /* INCL_DOSMVDM */
                   1541: 
                   1542: 
                   1543: /* The following #else/#endif corresponds to a #if near the top of this */
                   1544: /* file.  The next three lines include the 16-bit version of this file, */
                   1545: /* hence these lines MUST be the last lines in this include file.      */
                   1546: #else /* not INCL_32 */
                   1547: 
                   1548: #ifdef INCL_16
                   1549: #include <bsedos16.h>
                   1550: #endif /* INCL_16 */
                   1551: 
                   1552: #endif /* INCL_32 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.