Annotation of pmsdk/include/bsedos.h, revision 1.1

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

unix.superglobalmegacorp.com

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