Annotation of os232sdk/toolkt20/c/os2h/bsedos16.h, revision 1.1

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

unix.superglobalmegacorp.com

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