Annotation of pmsdk/include/bsedos.h, revision 1.1.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.