home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bpos2api.zip / DOSTYPES.PAS < prev    next >
Pascal/Delphi Source File  |  1993-11-17  |  88KB  |  2,353 lines

  1.  
  2. (*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*)
  3. (*                                                                   *)
  4. (*     Borland Pascal OS/2 API                                       *)
  5. (*                                                                   *)
  6. (*     DOSTYPES - Dos system types                                   *)
  7. (*                                                                   *)
  8. (*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*)
  9.  
  10. unit DosTypes;
  11.  
  12. interface
  13.  
  14. uses
  15.   OS2Def;
  16.  
  17. (* ---------------------------- ERROR CODES ------------------------------- *)
  18.  
  19. const
  20.   NO_ERROR                                = 0;
  21.   ERROR_INVALID_FUNCTION                  = 1;
  22.   ERROR_FILE_NOT_FOUND                    = 2;
  23.   ERROR_PATH_NOT_FOUND                    = 3;
  24.   ERROR_TOO_MANY_OPEN_FILES               = 4;
  25.   ERROR_ACCESS_DENIED                     = 5;
  26.   ERROR_INVALID_HANDLE                    = 6;
  27.   ERROR_ARENA_TRASHED                     = 7;
  28.   ERROR_NOT_ENOUGH_MEMORY                 = 8;
  29.   ERROR_INVALID_BLOCK                     = 9;
  30.   ERROR_BAD_ENVIRONMENT                   = 10;
  31.   ERROR_BAD_FORMAT                        = 11;
  32.   ERROR_INVALID_ACCESS                    = 12;
  33.   ERROR_INVALID_DATA                      = 13;
  34.   ERROR_INVALID_DRIVE                     = 15;
  35.   ERROR_CURRENT_DIRECTORY                 = 16;
  36.   ERROR_NOT_SAME_DEVICE                   = 17;
  37.   ERROR_NO_MORE_FILES                     = 18;
  38.   ERROR_WRITE_PROTECT                     = 19;
  39.   ERROR_BAD_UNIT                          = 20;
  40.   ERROR_NOT_READY                         = 21;
  41.   ERROR_BAD_COMMAND                       = 22;
  42.   ERROR_CRC                               = 23;
  43.   ERROR_BAD_LENGTH                        = 24;
  44.   ERROR_SEEK                              = 25;
  45.   ERROR_NOT_DOS_DISK                      = 26;
  46.   ERROR_SECTOR_NOT_FOUND                  = 27;
  47.   ERROR_OUT_OF_PAPER                      = 28;
  48.   ERROR_WRITE_FAULT                       = 29;
  49.   ERROR_READ_FAULT                        = 30;
  50.   ERROR_GEN_FAILURE                       = 31;
  51.   ERROR_SHARING_VIOLATION                 = 32;
  52.   ERROR_LOCK_VIOLATION                    = 33;
  53.   ERROR_WRONG_DISK                        = 34;
  54.   ERROR_FCB_UNAVAILABLE                   = 35;
  55.   ERROR_SHARING_BUFFER_EXCEEDED           = 36;
  56.   ERROR_CODE_PAGE_MISMATCHED              = 37;
  57.   ERROR_HANDLE_EOF                        = 38;
  58.   ERROR_HANDLE_DISK_FULL                  = 39;
  59.   ERROR_NOT_SUPPORTED                     = 50;
  60.   ERROR_REM_NOT_LIST                      = 51;
  61.   ERROR_DUP_NAME                          = 52;
  62.   ERROR_BAD_NETPATH                       = 53;
  63.   ERROR_NETWORK_BUSY                      = 54;
  64.   ERROR_DEV_NOT_EXIST                     = 55;
  65.   ERROR_TOO_MANY_CMDS                     = 56;
  66.   ERROR_ADAP_HDW_ERR                      = 57;
  67.   ERROR_BAD_NET_RESP                      = 58;
  68.   ERROR_UNEXP_NET_ERR                     = 59;
  69.   ERROR_BAD_REM_ADAP                      = 60;
  70.   ERROR_PRINTQ_FULL                       = 61;
  71.   ERROR_NO_SPOOL_SPACE                    = 62;
  72.   ERROR_PRINT_CANCELLED                   = 63;
  73.   ERROR_NETNAME_DELETED                   = 64;
  74.   ERROR_NETWORK_ACCESS_DENIED             = 65;
  75.   ERROR_BAD_DEV_TYPE                      = 66;
  76.   ERROR_BAD_NET_NAME                      = 67;
  77.   ERROR_TOO_MANY_NAMES                    = 68;
  78.   ERROR_TOO_MANY_SESS                     = 69;
  79.   ERROR_SHARING_PAUSED                    = 70;
  80.   ERROR_REQ_NOT_ACCEP                     = 71;
  81.   ERROR_REDIR_PAUSED                      = 72;
  82.   ERROR_SBCS_ATT_WRITE_PROT               = 73;
  83.   ERROR_SBCS_GENERAL_FAILURE              = 74;
  84.   ERROR_XGA_OUT_MEMORY                    = 75;
  85.   ERROR_FILE_EXISTS                       = 80;
  86.   ERROR_DUP_FCB                           = 81;
  87.   ERROR_CANNOT_MAKE                       = 82;
  88.   ERROR_FAIL_I24                          = 83;
  89.   ERROR_OUT_OF_STRUCTURES                 = 84;
  90.   ERROR_ALREADY_ASSIGNED                  = 85;
  91.   ERROR_INVALID_PASSWORD                  = 86;
  92.   ERROR_INVALID_PARAMETER                 = 87;
  93.   ERROR_NET_WRITE_FAULT                   = 88;
  94.   ERROR_NO_PROC_SLOTS                     = 89;
  95.   ERROR_NOT_FROZEN                        = 90;
  96.   ERROR_SYS_COMP_NOT_LOADED               = 90;
  97.   ERR_TSTOVFL                             = 91;
  98.   ERR_TSTDUP                              = 92;
  99.   ERROR_NO_ITEMS                          = 93;
  100.   ERROR_INTERRUPT                         = 95;
  101.   ERROR_DEVICE_IN_USE                     = 99;
  102.   ERROR_TOO_MANY_SEMAPHORES               = 100;
  103.   ERROR_EXCL_SEM_ALREADY_OWNED            = 101;
  104.   ERROR_SEM_IS_SET                        = 102;
  105.   ERROR_TOO_MANY_SEM_REQUESTS             = 103;
  106.   ERROR_INVALID_AT_INTERRUPT_TIME         = 104;
  107.   ERROR_SEM_OWNER_DIED                    = 105;
  108.   ERROR_SEM_USER_LIMIT                    = 106;
  109.   ERROR_DISK_CHANGE                       = 107;
  110.   ERROR_DRIVE_LOCKED                      = 108;
  111.   ERROR_BROKEN_PIPE                       = 109;
  112.   ERROR_OPEN_FAILED                       = 110;
  113.   ERROR_BUFFER_OVERFLOW                   = 111;
  114.   ERROR_DISK_FULL                         = 112;
  115.   ERROR_NO_MORE_SEARCH_HANDLES            = 113;
  116.   ERROR_INVALID_TARGET_HANDLE             = 114;
  117.   ERROR_PROTECTION_VIOLATION              = 115;
  118.   ERROR_VIOKBD_REQUEST                    = 116;
  119.   ERROR_INVALID_CATEGORY                  = 117;
  120.   ERROR_INVALID_VERIFY_SWITCH             = 118;
  121.   ERROR_BAD_DRIVER_LEVEL                  = 119;
  122.   ERROR_CALL_NOT_IMPLEMENTED              = 120;
  123.   ERROR_SEM_TIMEOUT                       = 121;
  124.   ERROR_INSUFFICIENT_BUFFER               = 122;
  125.   ERROR_INVALID_NAME                      = 123;
  126.   ERROR_INVALID_LEVEL                     = 124;
  127.   ERROR_NO_VOLUME_LABEL                   = 125;
  128.   ERROR_MOD_NOT_FOUND                     = 126;
  129.   ERROR_PROC_NOT_FOUND                    = 127;
  130.   ERROR_WAIT_NO_CHILDREN                  = 128;
  131.   ERROR_CHILD_NOT_COMPLETE                = 129;
  132.   ERROR_DIRECT_ACCESS_HANDLE              = 130;
  133.   ERROR_NEGATIVE_SEEK                     = 131;
  134.   ERROR_SEEK_ON_DEVICE                    = 132;
  135.   ERROR_IS_JOIN_TARGET                    = 133;
  136.   ERROR_IS_JOINED                         = 134;
  137.   ERROR_IS_SUBSTED                        = 135;
  138.   ERROR_NOT_JOINED                        = 136;
  139.   ERROR_NOT_SUBSTED                       = 137;
  140.   ERROR_JOIN_TO_JOIN                      = 138;
  141.   ERROR_SUBST_TO_SUBST                    = 139;
  142.   ERROR_JOIN_TO_SUBST                     = 140;
  143.   ERROR_SUBST_TO_JOIN                     = 141;
  144.   ERROR_BUSY_DRIVE                        = 142;
  145.   ERROR_SAME_DRIVE                        = 143;
  146.   ERROR_DIR_NOT_ROOT                      = 144;
  147.   ERROR_DIR_NOT_EMPTY                     = 145;
  148.   ERROR_IS_SUBST_PATH                     = 146;
  149.   ERROR_IS_JOIN_PATH                      = 147;
  150.   ERROR_PATH_BUSY                         = 148;
  151.   ERROR_IS_SUBST_TARGET                   = 149;
  152.   ERROR_SYSTEM_TRACE                      = 150;
  153.   ERROR_INVALID_EVENT_COUNT               = 151;
  154.   ERROR_TOO_MANY_MUXWAITERS               = 152;
  155.   ERROR_INVALID_LIST_FORMAT               = 153;
  156.   ERROR_LABEL_TOO_LONG                    = 154;
  157.   ERROR_TOO_MANY_TCBS                     = 155;
  158.   ERROR_SIGNAL_REFUSED                    = 156;
  159.   ERROR_DISCARDED                         = 157;
  160.   ERROR_NOT_LOCKED                        = 158;
  161.   ERROR_BAD_THREADID_ADDR                 = 159;
  162.   ERROR_BAD_ARGUMENTS                     = 160;
  163.   ERROR_BAD_PATHNAME                      = 161;
  164.   ERROR_SIGNAL_PENDING                    = 162;
  165.   ERROR_UNCERTAIN_MEDIA                   = 163;
  166.   ERROR_MAX_THRDS_REACHED                 = 164;
  167.   ERROR_MONITORS_NOT_SUPPORTED            = 165;
  168.   ERROR_UNC_DRIVER_NOT_INSTALLED          = 166;
  169.   ERROR_LOCK_FAILED                       = 167;
  170.   ERROR_SWAPIO_FAILED                     = 168;
  171.   ERROR_SWAPIN_FAILED                     = 169;
  172.   ERROR_BUSY                              = 170;
  173.   ERROR_CANCEL_VIOLATION                  = 173;
  174.   ERROR_ATOMIC_LOCK_NOT_SUPPORTED         = 174;
  175.   ERROR_READ_LOCKS_NOT_SUPPORTED          = 175;
  176.   ERROR_INVALID_SEGMENT_NUMBER            = 180;
  177.   ERROR_INVALID_CALLGATE                  = 181;
  178.   ERROR_INVALID_ORDINAL                   = 182;
  179.   ERROR_ALREADY_EXISTS                    = 183;
  180.   ERROR_NO_CHILD_PROCESS                  = 184;
  181.   ERROR_CHILD_ALIVE_NOWAIT                = 185;
  182.   ERROR_INVALID_FLAG_NUMBER               = 186;
  183.   ERROR_SEM_NOT_FOUND                     = 187;
  184.   ERROR_INVALID_STARTING_CODESEG          = 188;
  185.   ERROR_INVALID_STACKSEG                  = 189;
  186.   ERROR_INVALID_MODULETYPE                = 190;
  187.   ERROR_INVALID_EXE_SIGNATURE             = 191;
  188.   ERROR_EXE_MARKED_INVALID                = 192;
  189.   ERROR_BAD_EXE_FORMAT                    = 193;
  190.   ERROR_ITERATED_DATA_EXCEEDS_64K         = 194;
  191.   ERROR_INVALID_MINALLOCSIZE              = 195;
  192.   ERROR_DYNLINK_FROM_INVALID_RING         = 196;
  193.   ERROR_IOPL_NOT_ENABLED                  = 197;
  194.   ERROR_INVALID_SEGDPL                    = 198;
  195.   ERROR_AUTODATASEG_EXCEEDS_64K           = 199;
  196.   ERROR_RING2SEG_MUST_BE_MOVABLE          = 200;
  197.   ERROR_RELOCSRC_CHAIN_EXCEEDS_SEGLIMIT   = 201;
  198.   ERROR_INFLOOP_IN_RELOC_CHAIN            = 202;
  199.   ERROR_ENVVAR_NOT_FOUND                  = 203;
  200.   ERROR_NOT_CURRENT_CTRY                  = 204;
  201.   ERROR_NO_SIGNAL_SENT                    = 205;
  202.   ERROR_FILENAME_EXCED_RANGE              = 206;
  203.   ERROR_RING2_STACK_IN_USE                = 207;
  204.   ERROR_META_EXPANSION_TOO_LONG           = 208;
  205.   ERROR_INVALID_SIGNAL_NUMBER             = 209;
  206.   ERROR_THREAD_1_INACTIVE                 = 210;
  207.   ERROR_INFO_NOT_AVAIL                    = 211;
  208.   ERROR_LOCKED                            = 212;
  209.   ERROR_BAD_DYNALINK                      = 213;
  210.   ERROR_TOO_MANY_MODULES                  = 214;
  211.   ERROR_NESTING_NOT_ALLOWED               = 215;
  212.   ERROR_CANNOT_SHRINK                     = 216;
  213.   ERROR_ZOMBIE_PROCESS                    = 217;
  214.   ERROR_STACK_IN_HIGH_MEMORY              = 218;
  215.   ERROR_INVALID_EXITROUTINE_RING          = 219;
  216.   ERROR_GETBUF_FAILED                     = 220;
  217.   ERROR_FLUSHBUF_FAILED                   = 221;
  218.   ERROR_TRANSFER_TOO_LONG                 = 222;
  219.   ERROR_FORCENOSWAP_FAILED                = 223;
  220.   ERROR_SMG_NO_TARGET_WINDOW              = 224;
  221.   ERROR_NO_CHILDREN                       = 228;
  222.   ERROR_INVALID_SCREEN_GROUP              = 229;
  223.   ERROR_BAD_PIPE                          = 230;
  224.   ERROR_PIPE_BUSY                         = 231;
  225.   ERROR_NO_DATA                           = 232;
  226.   ERROR_PIPE_NOT_CONNECTED                = 233;
  227.   ERROR_MORE_DATA                         = 234;
  228.   ERROR_VC_DISCONNECTED                   = 240;
  229.   ERROR_CIRCULARITY_REQUESTED             = 250;
  230.   ERROR_DIRECTORY_IN_CDS                  = 251;
  231.   ERROR_INVALID_FSD_NAME                  = 252;
  232.   ERROR_INVALID_PATH                      = 253;
  233.   ERROR_INVALID_EA_NAME                   = 254;
  234.   ERROR_EA_LIST_INCONSISTENT              = 255;
  235.   ERROR_EA_LIST_TOO_LONG                  = 256;
  236.   ERROR_NO_META_MATCH                     = 257;
  237.   ERROR_FINDNOTIFY_TIMEOUT                = 258;
  238.   ERROR_NO_MORE_ITEMS                     = 259;
  239.   ERROR_SEARCH_STRUC_REUSED               = 260;
  240.   ERROR_CHAR_NOT_FOUND                    = 261;
  241.   ERROR_TOO_MUCH_STACK                    = 262;
  242.   ERROR_INVALID_ATTR                      = 263;
  243.   ERROR_INVALID_STARTING_RING             = 264;
  244.   ERROR_INVALID_DLL_INIT_RING             = 265;
  245.   ERROR_CANNOT_COPY                       = 266;
  246.   ERROR_DIRECTORY                         = 267;
  247.   ERROR_OPLOCKED_FILE                     = 268;
  248.   ERROR_OPLOCK_THREAD_EXISTS              = 269;
  249.   ERROR_VOLUME_CHANGED                    = 270;
  250.   ERROR_FINDNOTIFY_HANDLE_IN_USE          = 271;
  251.   ERROR_FINDNOTIFY_HANDLE_CLOSED          = 272;
  252.   ERROR_NOTIFY_OBJECT_REMOVED             = 273;
  253.   ERROR_ALREADY_SHUTDOWN                  = 274;
  254.   ERROR_EAS_DIDNT_FIT                     = 275;
  255.   ERROR_EA_FILE_CORRUPT                   = 276;
  256.   ERROR_EA_TABLE_FULL                     = 277;
  257.   ERROR_INVALID_EA_HANDLE                 = 278;
  258.   ERROR_NO_CLUSTER                        = 279;
  259.   ERROR_CREATE_EA_FILE                    = 280;
  260.   ERROR_CANNOT_OPEN_EA_FILE               = 281;
  261.   ERROR_EAS_NOT_SUPPORTED                 = 282;
  262.   ERROR_NEED_EAS_FOUND                    = 283;
  263.   ERROR_DUPLICATE_HANDLE                  = 284;
  264.   ERROR_DUPLICATE_NAME                    = 285;
  265.   ERROR_EMPTY_MUXWAIT                     = 286;
  266.   ERROR_MUTEX_OWNED                       = 287;
  267.   ERROR_NOT_OWNER                         = 288;
  268.   ERROR_PARAM_TOO_SMALL                   = 289;
  269.   ERROR_TOO_MANY_HANDLES                  = 290;
  270.   ERROR_TOO_MANY_OPENS                    = 291;
  271.   ERROR_WRONG_TYPE                        = 292;
  272.   ERROR_UNUSED_CODE                       = 293;
  273.   ERROR_THREAD_NOT_TERMINATED             = 294;
  274.   ERROR_INIT_ROUTINE_FAILED               = 295;
  275.   ERROR_MODULE_IN_USE                     = 296;
  276.   ERROR_NOT_ENOUGH_WATCHPOINTS            = 297;
  277.   ERROR_TOO_MANY_POSTS                    = 298;
  278.   ERROR_ALREADY_POSTED                    = 299;
  279.   ERROR_ALREADY_RESET                     = 300;
  280.   ERROR_SEM_BUSY                          = 301;
  281.   ERROR_INVALID_PROCID                    = 303;
  282.   ERROR_INVALID_PDELTA                    = 304;
  283.   ERROR_NOT_DESCENDANT                    = 305;
  284.   ERROR_NOT_SESSION_MANAGER               = 306;
  285.   ERROR_INVALID_PCLASS                    = 307;
  286.   ERROR_INVALID_SCOPE                     = 308;
  287.   ERROR_INVALID_THREADID                  = 309;
  288.   ERROR_DOSSUB_SHRINK                     = 310;
  289.   ERROR_DOSSUB_NOMEM                      = 311;
  290.   ERROR_DOSSUB_OVERLAP                    = 312;
  291.   ERROR_DOSSUB_BADSIZE                    = 313;
  292.   ERROR_DOSSUB_BADFLAG                    = 314;
  293.   ERROR_DOSSUB_BADSELECTOR                = 315;
  294.   ERROR_MR_MSG_TOO_LONG                   = 316;
  295.   ERROR_MR_MID_NOT_FOUND                  = 317;
  296.   ERROR_MR_UN_ACC_MSGF                    = 318;
  297.   ERROR_MR_INV_MSGF_FORMAT                = 319;
  298.   ERROR_MR_INV_IVCOUNT                    = 320;
  299.   ERROR_MR_UN_PERFORM                     = 321;
  300.   ERROR_TS_WAKEUP                         = 322;
  301.   ERROR_TS_SEMHANDLE                      = 323;
  302.   ERROR_TS_NOTIMER                        = 324;
  303.   ERROR_TS_HANDLE                         = 326;
  304.   ERROR_TS_DATETIME                       = 327;
  305.   ERROR_SYS_INTERNAL                      = 328;
  306.   ERROR_QUE_CURRENT_NAME                  = 329;
  307.   ERROR_QUE_PROC_NOT_OWNED                = 330;
  308.   ERROR_QUE_PROC_OWNED                    = 331;
  309.   ERROR_QUE_DUPLICATE                     = 332;
  310.   ERROR_QUE_ELEMENT_NOT_EXIST             = 333;
  311.   ERROR_QUE_NO_MEMORY                     = 334;
  312.   ERROR_QUE_INVALID_NAME                  = 335;
  313.   ERROR_QUE_INVALID_PRIORITY              = 336;
  314.   ERROR_QUE_INVALID_HANDLE                = 337;
  315.   ERROR_QUE_LINK_NOT_FOUND                = 338;
  316.   ERROR_QUE_MEMORY_ERROR                  = 339;
  317.   ERROR_QUE_PREV_AT_END                   = 340;
  318.   ERROR_QUE_PROC_NO_ACCESS                = 341;
  319.   ERROR_QUE_EMPTY                         = 342;
  320.   ERROR_QUE_NAME_NOT_EXIST                = 343;
  321.   ERROR_QUE_NOT_INITIALIZED               = 344;
  322.   ERROR_QUE_UNABLE_TO_ACCESS              = 345;
  323.   ERROR_QUE_UNABLE_TO_ADD                 = 346;
  324.   ERROR_QUE_UNABLE_TO_INIT                = 347;
  325.   ERROR_VIO_INVALID_MASK                  = 349;
  326.   ERROR_VIO_PTR                           = 350;
  327.   ERROR_VIO_APTR                          = 351;
  328.   ERROR_VIO_RPTR                          = 352;
  329.   ERROR_VIO_CPTR                          = 353;
  330.   ERROR_VIO_LPTR                          = 354;
  331.   ERROR_VIO_MODE                          = 355;
  332.   ERROR_VIO_WIDTH                         = 356;
  333.   ERROR_VIO_ATTR                          = 357;
  334.   ERROR_VIO_ROW                           = 358;
  335.   ERROR_VIO_COL                           = 359;
  336.   ERROR_VIO_TOPROW                        = 360;
  337.   ERROR_VIO_BOTROW                        = 361;
  338.   ERROR_VIO_RIGHTCOL                      = 362;
  339.   ERROR_VIO_LEFTCOL                       = 363;
  340.   ERROR_SCS_CALL                          = 364;
  341.   ERROR_SCS_VALUE                         = 365;
  342.   ERROR_VIO_WAIT_FLAG                     = 366;
  343.   ERROR_VIO_UNLOCK                        = 367;
  344.   ERROR_SGS_NOT_SESSION_MGR               = 368;
  345.   ERROR_SMG_INVALID_SGID                  = 369;
  346.   ERROR_SMG_INVALID_SESSION_ID            = 369;
  347.   ERROR_SMG_NOSG                          = 370;
  348.   ERROR_SMG_NO_SESSIONS                   = 370;
  349.   ERROR_SMG_GRP_NOT_FOUND                 = 371;
  350.   ERROR_SMG_SESSION_NOT_FOUND             = 371;
  351.   ERROR_SMG_SET_TITLE                     = 372;
  352.   ERROR_KBD_PARAMETER                     = 373;
  353.   ERROR_KBD_NO_DEVICE                     = 374;
  354.   ERROR_KBD_INVALID_IOWAIT                = 375;
  355.   ERROR_KBD_INVALID_LENGTH                = 376;
  356.   ERROR_KBD_INVALID_ECHO_MASK             = 377;
  357.   ERROR_KBD_INVALID_INPUT_MASK            = 378;
  358.   ERROR_MON_INVALID_PARMS                 = 379;
  359.   ERROR_MON_INVALID_DEVNAME               = 380;
  360.   ERROR_MON_INVALID_HANDLE                = 381;
  361.   ERROR_MON_BUFFER_TOO_SMALL              = 382;
  362.   ERROR_MON_BUFFER_EMPTY                  = 383;
  363.   ERROR_MON_DATA_TOO_LARGE                = 384;
  364.   ERROR_MOUSE_NO_DEVICE                   = 385;
  365.   ERROR_MOUSE_INV_HANDLE                  = 386;
  366.   ERROR_MOUSE_INV_PARMS                   = 387;
  367.   ERROR_MOUSE_CANT_RESET                  = 388;
  368.   ERROR_MOUSE_DISPLAY_PARMS               = 389;
  369.   ERROR_MOUSE_INV_MODULE                  = 390;
  370.   ERROR_MOUSE_INV_ENTRY_PT                = 391;
  371.   ERROR_MOUSE_INV_MASK                    = 392;
  372.   NO_ERROR_MOUSE_NO_DATA                  = 393;
  373.   NO_ERROR_MOUSE_PTR_DRAWN                = 394;
  374.   ERROR_INVALID_FREQUENCY                 = 395;
  375.   ERROR_NLS_NO_COUNTRY_FILE               = 396;
  376.   ERROR_NLS_OPEN_FAILED                   = 397;
  377.   ERROR_NLS_NO_CTRY_CODE                  = 398;
  378.   ERROR_NLS_TABLE_TRUNCATED               = 399;
  379.   ERROR_NLS_BAD_TYPE                      = 400;
  380.   ERROR_NLS_TYPE_NOT_FOUND                = 401;
  381.   ERROR_VIO_SMG_ONLY                      = 402;
  382.   ERROR_VIO_INVALID_ASCIIZ                = 403;
  383.   ERROR_VIO_DEREGISTER                    = 404;
  384.   ERROR_VIO_NO_POPUP                      = 405;
  385.   ERROR_VIO_EXISTING_POPUP                = 406;
  386.   ERROR_KBD_SMG_ONLY                      = 407;
  387.   ERROR_KBD_INVALID_ASCIIZ                = 408;
  388.   ERROR_KBD_INVALID_MASK                  = 409;
  389.   ERROR_KBD_REGISTER                      = 410;
  390.   ERROR_KBD_DEREGISTER                    = 411;
  391.   ERROR_MOUSE_SMG_ONLY                    = 412;
  392.   ERROR_MOUSE_INVALID_ASCIIZ              = 413;
  393.   ERROR_MOUSE_INVALID_MASK                = 414;
  394.   ERROR_MOUSE_REGISTER                    = 415;
  395.   ERROR_MOUSE_DEREGISTER                  = 416;
  396.   ERROR_SMG_BAD_ACTION                    = 417;
  397.   ERROR_SMG_INVALID_CALL                  = 418;
  398.   ERROR_SCS_SG_NOTFOUND                   = 419;
  399.   ERROR_SCS_NOT_SHELL                     = 420;
  400.   ERROR_VIO_INVALID_PARMS                 = 421;
  401.   ERROR_VIO_FUNCTION_OWNED                = 422;
  402.   ERROR_VIO_RETURN                        = 423;
  403.   ERROR_SCS_INVALID_FUNCTION              = 424;
  404.   ERROR_SCS_NOT_SESSION_MGR               = 425;
  405.   ERROR_VIO_REGISTER                      = 426;
  406.   ERROR_VIO_NO_MODE_THREAD                = 427;
  407.   ERROR_VIO_NO_SAVE_RESTORE_THD           = 428;
  408.   ERROR_VIO_IN_BG                         = 429;
  409.   ERROR_VIO_ILLEGAL_DURING_POPUP          = 430;
  410.   ERROR_SMG_NOT_BASESHELL                 = 431;
  411.   ERROR_SMG_BAD_STATUSREQ                 = 432;
  412.   ERROR_QUE_INVALID_WAIT                  = 433;
  413.   ERROR_VIO_LOCK                          = 434;
  414.   ERROR_MOUSE_INVALID_IOWAIT              = 435;
  415.   ERROR_VIO_INVALID_HANDLE                = 436;
  416.   ERROR_VIO_ILLEGAL_DURING_LOCK           = 437;
  417.   ERROR_VIO_INVALID_LENGTH                = 438;
  418.   ERROR_KBD_INVALID_HANDLE                = 439;
  419.   ERROR_KBD_NO_MORE_HANDLE                = 440;
  420.   ERROR_KBD_CANNOT_CREATE_KCB             = 441;
  421.   ERROR_KBD_CODEPAGE_LOAD_INCOMPL         = 442;
  422.   ERROR_KBD_INVALID_CODEPAGE_ID           = 443;
  423.   ERROR_KBD_NO_CODEPAGE_SUPPORT           = 444;
  424.   ERROR_KBD_FOCUS_REQUIRED                = 445;
  425.   ERROR_KBD_FOCUS_ALREADY_ACTIVE          = 446;
  426.   ERROR_KBD_KEYBOARD_BUSY                 = 447;
  427.   ERROR_KBD_INVALID_CODEPAGE              = 448;
  428.   ERROR_KBD_UNABLE_TO_FOCUS               = 449;
  429.   ERROR_SMG_SESSION_NON_SELECT            = 450;
  430.   ERROR_SMG_SESSION_NOT_FOREGRND          = 451;
  431.   ERROR_SMG_SESSION_NOT_PARENT            = 452;
  432.   ERROR_SMG_INVALID_START_MODE            = 453;
  433.   ERROR_SMG_INVALID_RELATED_OPT           = 454;
  434.   ERROR_SMG_INVALID_BOND_OPTION           = 455;
  435.   ERROR_SMG_INVALID_SELECT_OPT            = 456;
  436.   ERROR_SMG_START_IN_BACKGROUND           = 457;
  437.   ERROR_SMG_INVALID_STOP_OPTION           = 458;
  438.   ERROR_SMG_BAD_RESERVE                   = 459;
  439.   ERROR_SMG_PROCESS_NOT_PARENT            = 460;
  440.   ERROR_SMG_INVALID_DATA_LENGTH           = 461;
  441.   ERROR_SMG_NOT_BOUND                     = 462;
  442.   ERROR_SMG_RETRY_SUB_ALLOC               = 463;
  443.   ERROR_KBD_DETACHED                      = 464;
  444.   ERROR_VIO_DETACHED                      = 465;
  445.   ERROR_MOU_DETACHED                      = 466;
  446.   ERROR_VIO_FONT                          = 467;
  447.   ERROR_VIO_USER_FONT                     = 468;
  448.   ERROR_VIO_BAD_CP                        = 469;
  449.   ERROR_VIO_NO_CP                         = 470;
  450.   ERROR_VIO_NA_CP                         = 471;
  451.   ERROR_INVALID_CODE_PAGE                 = 472;
  452.   ERROR_CPLIST_TOO_SMALL                  = 473;
  453.   ERROR_CP_NOT_MOVED                      = 474;
  454.   ERROR_MODE_SWITCH_INIT                  = 475;
  455.   ERROR_CODE_PAGE_NOT_FOUND               = 476;
  456.   ERROR_UNEXPECTED_SLOT_RETURNED          = 477;
  457.   ERROR_SMG_INVALID_TRACE_OPTION          = 478;
  458.   ERROR_VIO_INTERNAL_RESOURCE             = 479;
  459.   ERROR_VIO_SHELL_INIT                    = 480;
  460.   ERROR_SMG_NO_HARD_ERRORS                = 481;
  461.   ERROR_CP_SWITCH_INCOMPLETE              = 482;
  462.   ERROR_VIO_TRANSPARENT_POPUP             = 483;
  463.   ERROR_CRITSEC_OVERFLOW                  = 484;
  464.   ERROR_CRITSEC_UNDERFLOW                 = 485;
  465.   ERROR_VIO_BAD_RESERVE                   = 486;
  466.   ERROR_INVALID_ADDRESS                   = 487;
  467.   ERROR_ZERO_SELECTORS_REQUESTED          = 488;
  468.   ERROR_NOT_ENOUGH_SELECTORS_AVA          = 489;
  469.   ERROR_INVALID_SELECTOR                  = 490;
  470.   ERROR_SMG_INVALID_PROGRAM_TYPE          = 491;
  471.   ERROR_SMG_INVALID_PGM_CONTROL           = 492;
  472.   ERROR_SMG_INVALID_INHERIT_OPT           = 493;
  473.   ERROR_VIO_EXTENDED_SG                   = 494;
  474.   ERROR_VIO_NOT_PRES_MGR_SG               = 495;
  475.   ERROR_VIO_SHIELD_OWNED                  = 496;
  476.   ERROR_VIO_NO_MORE_HANDLES               = 497;
  477.   ERROR_VIO_SEE_ERROR_LOG                 = 498;
  478.   ERROR_VIO_ASSOCIATED_DC                 = 499;
  479.   ERROR_KBD_NO_CONSOLE                    = 500;
  480.   ERROR_MOUSE_NO_CONSOLE                  = 501;
  481.   ERROR_MOUSE_INVALID_HANDLE              = 502;
  482.   ERROR_SMG_INVALID_DEBUG_PARMS           = 503;
  483.   ERROR_KBD_EXTENDED_SG                   = 504;
  484.   ERROR_MOU_EXTENDED_SG                   = 505;
  485.   ERROR_SMG_INVALID_ICON_FILE             = 506;
  486.   ERROR_TRC_PID_NON_EXISTENT              = 507;
  487.   ERROR_TRC_COUNT_ACTIVE                  = 508;
  488.   ERROR_TRC_SUSPENDED_BY_COUNT            = 509;
  489.   ERROR_TRC_COUNT_INACTIVE                = 510;
  490.   ERROR_TRC_COUNT_REACHED                 = 511;
  491.   ERROR_NO_MC_TRACE                       = 512;
  492.   ERROR_MC_TRACE                          = 513;
  493.   ERROR_TRC_COUNT_ZERO                    = 514;
  494.   ERROR_SMG_TOO_MANY_DDS                  = 515;
  495.   ERROR_SMG_INVALID_NOTIFICATION          = 516;
  496.   ERROR_LF_INVALID_FUNCTION               = 517;
  497.   ERROR_LF_NOT_AVAIL                      = 518;
  498.   ERROR_LF_SUSPENDED                      = 519;
  499.   ERROR_LF_BUF_TOO_SMALL                  = 520;
  500.   ERROR_LF_BUFFER_CORRUPTED               = 521;
  501.   ERROR_LF_BUFFER_FULL                    = 521;
  502.   ERROR_LF_INVALID_DAEMON                 = 522;
  503.   ERROR_LF_INVALID_RECORD                 = 522;
  504.   ERROR_LF_INVALID_TEMPL                  = 523;
  505.   ERROR_LF_INVALID_SERVICE                = 523;
  506.   ERROR_LF_GENERAL_FAILURE                = 524;
  507.   ERROR_LF_INVALID_ID                     = 525;
  508.   ERROR_LF_INVALID_HANDLE                 = 526;
  509.   ERROR_LF_NO_ID_AVAIL                    = 527;
  510.   ERROR_LF_TEMPLATE_AREA_FULL             = 528;
  511.   ERROR_LF_ID_IN_USE                      = 529;
  512.   ERROR_MOU_NOT_INITIALIZED               = 530;
  513.   ERROR_MOUINITREAL_DONE                  = 531;
  514.   ERROR_DOSSUB_CORRUPTED                  = 532;
  515.   ERROR_MOUSE_CALLER_NOT_SUBSYS           = 533;
  516.   ERROR_ARITHMETIC_OVERFLOW               = 534;
  517.   ERROR_TMR_NO_DEVICE                     = 535;
  518.   ERROR_TMR_INVALID_TIME                  = 536;
  519.   ERROR_PVW_INVALID_ENTITY                = 537;
  520.   ERROR_PVW_INVALID_ENTITY_TYPE           = 538;
  521.   ERROR_PVW_INVALID_SPEC                  = 539;
  522.   ERROR_PVW_INVALID_RANGE_TYPE            = 540;
  523.   ERROR_PVW_INVALID_COUNTER_BLK           = 541;
  524.   ERROR_PVW_INVALID_TEXT_BLK              = 542;
  525.   ERROR_PRF_NOT_INITIALIZED               = 543;
  526.   ERROR_PRF_ALREADY_INITIALIZED           = 544;
  527.   ERROR_PRF_NOT_STARTED                   = 545;
  528.   ERROR_PRF_ALREADY_STARTED               = 546;
  529.   ERROR_PRF_TIMER_OUT_OF_RANGE            = 547;
  530.   ERROR_PRF_TIMER_RESET                   = 548;
  531.   ERROR_VDD_LOCK_USEAGE_DENIED            = 639;
  532.   ERROR_TIMEOUT                           = 640;
  533.   ERROR_VDM_DOWN                          = 641;
  534.   ERROR_VDM_LIMIT                         = 642;
  535.   ERROR_VDD_NOT_FOUND                     = 643;
  536.   ERROR_INVALID_CALLER                    = 644;
  537.   ERROR_PID_MISMATCH                      = 645;
  538.   ERROR_INVALID_VDD_HANDLE                = 646;
  539.   ERROR_VLPT_NO_SPOOLER                   = 647;
  540.   ERROR_VCOM_DEVICE_BUSY                  = 648;
  541.   ERROR_VLPT_DEVICE_BUSY                  = 649;
  542.   ERROR_NESTING_TOO_DEEP                  = 650;
  543.   ERROR_VDD_MISSING                       = 651;
  544.   ERROR_BIDI_INVALID_LENGTH               = 671;
  545.   ERROR_BIDI_INVALID_INCREMENT            = 672;
  546.   ERROR_BIDI_INVALID_COMBINATION          = 673;
  547.   ERROR_BIDI_INVALID_RESERVED             = 674;
  548.   ERROR_BIDI_INVALID_EFFECT               = 675;
  549.   ERROR_BIDI_INVALID_CSDREC               = 676;
  550.   ERROR_BIDI_INVALID_CSDSTATE             = 677;
  551.   ERROR_BIDI_INVALID_LEVEL                = 678;
  552.   ERROR_BIDI_INVALID_TYPE_SUPPORT         = 679;
  553.   ERROR_BIDI_INVALID_ORIENTATION          = 680;
  554.   ERROR_BIDI_INVALID_NUM_SHAPE            = 681;
  555.   ERROR_BIDI_INVALID_CSD                  = 682;
  556.   ERROR_BIDI_NO_SUPPORT                   = 683;
  557.   NO_ERROR_BIDI_RW_INCOMPLETE             = 684;
  558.   ERROR_IMP_INVALID_PARM                  = 691;
  559.   ERROR_IMP_INVALID_LENGTH                = 692;
  560.   ERROR_MON_BAD_BUFFER                    = 730;
  561.   ERROR_MODULE_CORRUPTED                  = 731;
  562.   ERROR_SM_OUTOF_SWAPFILE                 = 1477;
  563.   ERROR_LF_TIMEOUT                        = 2055;
  564.   ERROR_LF_SUSPEND_SUCCESS                = 2057;
  565.   ERROR_LF_RESUME_SUCCESS                 = 2058;
  566.   ERROR_LF_REDIRECT_SUCCESS               = 2059;
  567.   ERROR_LF_REDIRECT_FAILURE               = 2060;
  568.   ERROR_SWAPPER_NOT_ACTIVE                = 32768;
  569.   ERROR_INVALID_SWAPID                    = 32769;
  570.   ERROR_IOERR_SWAP_FILE                   = 32770;
  571.   ERROR_SWAP_TABLE_FULL                   = 32771;
  572.   ERROR_SWAP_FILE_FULL                    = 32772;
  573.   ERROR_CANT_INIT_SWAPPER                 = 32773;
  574.   ERROR_SWAPPER_ALREADY_INIT              = 32774;
  575.   ERROR_PMM_INSUFFICIENT_MEMORY           = 32775;
  576.   ERROR_PMM_INVALID_FLAGS                 = 32776;
  577.   ERROR_PMM_INVALID_ADDRESS               = 32777;
  578.   ERROR_PMM_LOCK_FAILED                   = 32778;
  579.   ERROR_PMM_UNLOCK_FAILED                 = 32779;
  580.   ERROR_PMM_MOVE_INCOMPLETE               = 32780;
  581.   ERROR_UCOM_DRIVE_RENAMED                = 32781;
  582.   ERROR_UCOM_FILENAME_TRUNCATED           = 32782;
  583.   ERROR_UCOM_BUFFER_LENGTH                = 32783;
  584.   ERROR_MON_CHAIN_HANDLE                  = 32784;
  585.   ERROR_MON_NOT_REGISTERED                = 32785;
  586.   ERROR_SMG_ALREADY_TOP                   = 32786;
  587.   ERROR_PMM_ARENA_MODIFIED                = 32787;
  588.   ERROR_SMG_PRINTER_OPEN                  = 32788;
  589.   ERROR_PMM_SET_FLAGS_FAILED              = 32789;
  590.   ERROR_INVALID_DOS_DD                    = 32790;
  591.   ERROR_BLOCKED                           = 32791;
  592.   ERROR_NOBLOCK                           = 32792;
  593.   ERROR_INSTANCE_SHARED                   = 32793;
  594.   ERROR_NO_OBJECT                         = 32794;
  595.   ERROR_PARTIAL_ATTACH                    = 32795;
  596.   ERROR_INCACHE                           = 32796;
  597.   ERROR_SWAP_IO_PROBLEMS                  = 32797;
  598.   ERROR_CROSSES_OBJECT_BOUNDARY           = 32798;
  599.   ERROR_LONGLOCK                          = 32799;
  600.   ERROR_SHORTLOCK                         = 32800;
  601.   ERROR_UVIRTLOCK                         = 32801;
  602.   ERROR_ALIASLOCK                         = 32802;
  603.   ERROR_ALIAS                             = 32803;
  604.   ERROR_NO_MORE_HANDLES                   = 32804;
  605.   ERROR_SCAN_TERMINATED                   = 32805;
  606.   ERROR_TERMINATOR_NOT_FOUND              = 32806;
  607.   ERROR_NOT_DIRECT_CHILD                  = 32807;
  608.   ERROR_DELAY_FREE                        = 32808;
  609.   ERROR_GUARDPAGE                         = 32809;
  610.   ERROR_SWAPERROR                         = 32900;
  611.   ERROR_LDRERROR                          = 32901;
  612.   ERROR_NOMEMORY                          = 32902;
  613.   ERROR_NOACCESS                          = 32903;
  614.   ERROR_NO_DLL_TERM                       = 32904;
  615.   ERROR_CPSIO_CODE_PAGE_INVALID           = 65026;
  616.   ERROR_CPSIO_NO_SPOOLER                  = 65027;
  617.   ERROR_CPSIO_FONT_ID_INVALID             = 65028;
  618.   ERROR_CPSIO_INTERNAL_ERROR              = 65033;
  619.   ERROR_CPSIO_INVALID_PTR_NAME            = 65034;
  620.   ERROR_CPSIO_NOT_ACTIVE                  = 65037;
  621.   ERROR_CPSIO_PID_FULL                    = 65039;
  622.   ERROR_CPSIO_PID_NOT_FOUND               = 65040;
  623.   ERROR_CPSIO_READ_CTL_SEQ                = 65043;
  624.   ERROR_CPSIO_READ_FNT_DEF                = 65045;
  625.   ERROR_CPSIO_WRITE_ERROR                 = 65047;
  626.   ERROR_CPSIO_WRITE_FULL_ERROR            = 65048;
  627.   ERROR_CPSIO_WRITE_HANDLE_BAD            = 65049;
  628.   ERROR_CPSIO_SWIT_LOAD                   = 65074;
  629.   ERROR_CPSIO_INV_COMMAND                 = 65077;
  630.   ERROR_CPSIO_NO_FONT_SWIT                = 65078;
  631.   ERROR_ENTRY_IS_CALLGATE                 = 65079;
  632.  
  633. (* ----------------------------- ERRORS ----------------------------------- *)
  634.  
  635.   ERRACT_RETRY                            = 1;
  636.   ERRACT_DLYRET                           = 2;
  637.   ERRACT_USER                             = 3;
  638.   ERRACT_ABORT                            = 4;
  639.   ERRACT_PANIC                            = 5;
  640.   ERRACT_IGNORE                           = 6;
  641.   ERRACT_INTRET                           = 7;
  642.  
  643.   ERRCLASS_OUTRES                         = 1;
  644.   ERRCLASS_TEMPSIT                        = 2;
  645.   ERRCLASS_AUTH                           = 3;
  646.   ERRCLASS_INTRN                          = 4;
  647.   ERRCLASS_HRDFAIL                        = 5;
  648.   ERRCLASS_SYSFAIL                        = 6;
  649.   ERRCLASS_APPERR                         = 7;
  650.   ERRCLASS_NOTFND                         = 8;
  651.   ERRCLASS_BADFMT                         = 9;
  652.   ERRCLASS_LOCKED                         = 10;
  653.   ERRCLASS_MEDIA                          = 11;
  654.   ERRCLASS_ALREADY                        = 12;
  655.   ERRCLASS_UNK                            = 13;
  656.   ERRCLASS_CANT                           = 14;
  657.   ERRCLASS_TIME                           = 15;
  658.  
  659.   ERRLOC_UNK                              = 1;
  660.   ERRLOC_DISK                             = 2;
  661.   ERRLOC_NET                              = 3;
  662.   ERRLOC_SERDEV                           = 4;
  663.   ERRLOC_MEM                              = 5;
  664.  
  665.   FERR_DISABLEHARDERR                     = $0000;
  666.   FERR_ENABLEHARDERR                      = $0001;
  667.   FERR_ENABLEEXCEPTION                    = $0000;
  668.   FERR_DISABLEEXCEPTION                   = $0002;
  669.  
  670.  
  671. (* ------------------------- MEMORY MANAGEMENT ---------------------------- *)
  672.  
  673. const
  674.   PAG_READ                                = $0001;
  675.   PAG_WRITE                               = $0002;
  676.   PAG_EXECUTE                             = $0004;
  677.   PAG_GUARD                               = $0008;
  678.   PAG_COMMIT                              = $0010;
  679.   OBJ_TILE                                = $0040;
  680.   OBJ_PROTECTED                           = $0080;
  681.   OBJ_GETTABLE                            = $0100;
  682.   OBJ_GIVEABLE                            = $0200;
  683.   PAG_DEFAULT                             = $0400;
  684.   PAG_SHARED                              = $2000;
  685.   PAG_FREE                                = $4000;
  686.  
  687.   DOSSUB_INIT                             = $0001;
  688.   DOSSUB_GROW                             = $0002;
  689.   DOSSUB_SPARSE_OBJ                       = $0004;
  690.   DOSSUB_SERIALIZE                        = $0008;
  691.  
  692.  
  693. (* --------------------------- FILE SYSTEM -------------------------------- *)
  694.  
  695. const
  696.   CCHMAXPATH                              = 260;
  697.   CCHMAXPATHCOMP                          = 256;
  698.  
  699.   FILE_NORMAL                             = $0000;
  700.   FILE_READONLY                           = $0001;
  701.   FILE_HIDDEN                             = $0002;
  702.   FILE_SYSTEM                             = $0004;
  703.   FILE_DIRECTORY                          = $0010;
  704.   FILE_ARCHIVED                           = $0020;
  705.  
  706.   FILE_EXISTED                            = $0001;
  707.   FILE_CREATED                            = $0002;
  708.   FILE_TRUNCATED                          = $0003;
  709.  
  710.   FILE_OPEN                               = $0001;
  711.   FILE_TRUNCATE                           = $0002;
  712.   FILE_CREATE                             = $0010;
  713.  
  714.   FILE_BEGIN                              = 0;
  715.   FILE_CURRENT                            = 1;
  716.   FILE_END                                = 2;
  717.  
  718.   OPEN_ACTION_FAIL_IF_EXISTS              = $0000;
  719.   OPEN_ACTION_OPEN_IF_EXISTS              = $0001;
  720.   OPEN_ACTION_REPLACE_IF_EXISTS           = $0002;
  721.   OPEN_ACTION_FAIL_IF_NEW                 = $0000;
  722.   OPEN_ACTION_CREATE_IF_NEW               = $0010;
  723.  
  724.   OPEN_ACCESS_READONLY                    = $0000;
  725.   OPEN_ACCESS_WRITEONLY                   = $0001;
  726.   OPEN_ACCESS_READWRITE                   = $0002;
  727.  
  728.   OPEN_SHARE_DENYREADWRITE                = $0010;
  729.   OPEN_SHARE_DENYWRITE                    = $0020;
  730.   OPEN_SHARE_DENYREAD                     = $0030;
  731.   OPEN_SHARE_DENYNONE                     = $0040;
  732.  
  733.   OPEN_FLAGS_NOINHERIT                    = $0080;
  734.   OPEN_FLAGS_NO_LOCALITY                  = $0000;
  735.   OPEN_FLAGS_SEQUENTIAL                   = $0100;
  736.   OPEN_FLAGS_RANDOM                       = $0200;
  737.   OPEN_FLAGS_RANDOMSEQUENTIAL             = $0300;
  738.   OPEN_FLAGS_NO_CACHE                     = $1000;
  739.   OPEN_FLAGS_FAIL_ON_ERROR                = $2000;
  740.   OPEN_FLAGS_WRITE_THROUGH                = $4000;
  741.   OPEN_FLAGS_DASD                         = $8000;
  742.   OPEN_FLAGS_NONSPOOLED                   = $40000;
  743.  
  744.   FIL_STANDARD                            = 1;
  745.   FIL_QUERYEASIZE                         = 2;
  746.   FIL_QUERYEASFROMLIST                    = 3;
  747.   FIL_QUERYFULLNAME                       = 5;
  748.  
  749.   FSAIL_QUERYNAME                         = 1;
  750.   FSAIL_DEVNUMBER                         = 2;
  751.   FSAIL_DRVNUMBER                         = 3;
  752.  
  753.   FSAT_CHARDEV                            = 1;
  754.   FSAT_PSEUDODEV                          = 2;
  755.   FSAT_LOCALDRV                           = 3;
  756.   FSAT_REMOTEDRV                          = 4;
  757.  
  758.   DCPY_EXISTING                           = $0001;
  759.   DCPY_APPEND                             = $0002;
  760.   DCPY_FAILEAS                            = $0004;
  761.  
  762.   DSPI_WRTTHRU                            = $0010;
  763.  
  764.   HDIR_SYSTEM                             = 1;
  765.   HDIR_CREATE                             = (-1);
  766.  
  767.   FILE_IGNORE                             = $10000;
  768.  
  769.   MUST_HAVE_READONLY                      = (FILE_READONLY   or  (FILE_READONLY   shl  8));
  770.   MUST_HAVE_HIDDEN                        = (FILE_HIDDEN     or  (FILE_HIDDEN     shl  8));
  771.   MUST_HAVE_SYSTEM                        = (FILE_SYSTEM     or  (FILE_SYSTEM     shl  8));
  772.   MUST_HAVE_DIRECTORY                     = (FILE_DIRECTORY  or  (FILE_DIRECTORY  shl  8));
  773.   MUST_HAVE_ARCHIVED                      = (FILE_ARCHIVED   or  (FILE_ARCHIVED   shl  8));
  774.  
  775.   EAT_BINARY                              = $fffe;
  776.   EAT_ASCII                               = $fffd;
  777.   EAT_BITMAP                              = $fffb;
  778.   EAT_METAFILE                            = $fffa;
  779.   EAT_ICON                                = $fff9;
  780.   EAT_EA                                  = $ffee;
  781.   EAT_MVMT                                = $ffdf;
  782.   EAT_MVST                                = $ffde;
  783.   EAT_ASN1                                = $ffdd;
  784.  
  785.   ENUMEA_LEVEL_NO_VALUE                   = 1;
  786.  
  787.   ENUMEA_REFTYPE_FHANDLE                  = 0;
  788.   ENUMEA_REFTYPE_PATH                     = 1;
  789.   ENUMEA_REFTYPE_MAX                      = ENUMEA_REFTYPE_PATH;
  790.  
  791.   FHT_DISKFILE                            = $0000;
  792.   FHT_CHRDEV                              = $0001;
  793.   FHT_PIPE                                = $0002;
  794.  
  795.   FHB_DSKREMOTE                           = $8000;
  796.   FHB_CHRDEVREMOTE                        = $8000;
  797.   FHB_PIPEREMOTE                          = $8000;
  798.  
  799.   FS_ATTACH                               = 0;
  800.   FS_DETACH                               = 1;
  801.   FS_SPOOLATTACH                          = 2;
  802.   FS_SPOOLDETACH                          = 3;
  803.  
  804.   FSCTL_HANDLE                            = 1;
  805.   FSCTL_PATHNAME                          = 2;
  806.   FSCTL_FSDNAME                           = 3;
  807.  
  808.   FSCTL_ERROR_INFO                        = 1;
  809.   FSCTL_MAX_EASIZE                        = 2;
  810.  
  811.   FSIL_ALLOC                              = 1;
  812.   FSIL_VOLSER                             = 2;
  813.  
  814.   HANDTYPE_FILE                           = $0000;
  815.   HANDTYPE_DEVICE                         = $0001;
  816.   HANDTYPE_PIPE                           = $0002;
  817.   HANDTYPE_NETWORK                        = $8000;
  818.  
  819.   SEARCH_PATH                             = $0000;
  820.   SEARCH_CUR_DIRECTORY                    = $0001;
  821.   SEARCH_ENVIRONMENT                      = $0002;
  822.   SEARCH_IGNORENETERRS                    = $0004;
  823.  
  824.   FEA_NEEDEA                              = $80;
  825.  
  826. type
  827.   HDIR = SHANDLE;
  828.   PHDIR = ^HDIR;
  829.  
  830.   FTIME = word;
  831.   {
  832.     twosecs : Word : 5 ;
  833.     minutes : Word : 6 ;
  834.     hours : Word : 5 ;
  835.   }
  836.   PFTIME = ^FTIME;
  837.  
  838.   FDATE = word;
  839.   {
  840.     day : Word : 5 ;
  841.     month : Word : 4 ;
  842.     year : Word : 7 ;
  843.   }
  844.   PFDATE = ^FDATE;
  845.  
  846.   TFSALLOCATE = record
  847.     idFileSystem : Longint;
  848.     cSectorUnit : Longint;
  849.     cUnit : Longint;
  850.     cUnitAvail : Longint;
  851.     cbSector : Word;
  852.   end;
  853.   PFSALLOCATE = ^TFSALLOCATE;
  854.  
  855.   TEASIZEBUF = record
  856.     cbMaxEASize : Word;
  857.     cbMaxEAListSize : Longint;
  858.   end;
  859.   PEASIZEBUF = ^TEASIZEBUF;
  860.  
  861.   TFEA = record
  862.     fEA : Byte;
  863.     cbName : Byte;
  864.     cbValue : Word;
  865.   end;
  866.   PFEA = ^TFEA;
  867.  
  868.   TFEALIST = record
  869.     cbList : Longint;
  870.     list : array[0..1-1] of TFEA;
  871.   end;
  872.   PFEALIST = ^TFEALIST;
  873.  
  874.   TGEA = record
  875.     cbName : Byte;
  876.     szName : array[0..1-1] of Char;
  877.   end;
  878.   PGEA = ^TGEA;
  879.  
  880.   TGEALIST = record
  881.     cbList : Longint;
  882.     list : array[0..1-1] of TGEA;
  883.   end;
  884.   PGEALIST = ^TGEALIST;
  885.  
  886.   TEAOP = record
  887.     fpGEAList : PGEALIST;
  888.     fpFEAList : PFEALIST;
  889.     oError : Longint;
  890.   end;
  891.   PEAOP = ^TEAOP;
  892.  
  893.   TFEA2 = record
  894.     oNextEntryOffset : Longint;
  895.     fEA : Byte;
  896.     cbName : Byte;
  897.     cbValue : Word;
  898.     szName : array[0..1-1] of Char;
  899.   end;
  900.   PFEA2 = ^TFEA2;
  901.  
  902.   TFEA2LIST = record
  903.     cbList : Longint;
  904.     list : array[0..1-1] of TFEA2;
  905.   end;
  906.   PFEA2LIST = ^TFEA2LIST;
  907.  
  908.   TGEA2 = record
  909.     oNextEntryOffset : Longint;
  910.     cbName : Byte;
  911.     szName : array[0..1-1] of Char;
  912.   end;
  913.   PGEA2 = ^TGEA2;
  914.  
  915.   TGEA2LIST = record
  916.     cbList : Longint;
  917.     list : array[0..1-1] of TGEA2;
  918.   end;
  919.   PGEA2LIST = ^TGEA2LIST;
  920.  
  921.   TEAOP2 = record
  922.     fpGEA2List : PGEA2LIST;
  923.     fpFEA2List : PFEA2LIST;
  924.     oError : Longint;
  925.   end;
  926.   PEAOP2 = ^TEAOP2;
  927.  
  928.   TFILESTATUS = record
  929.     fdateCreation : FDATE;
  930.     ftimeCreation : FTIME;
  931.     fdateLastAccess : FDATE;
  932.     ftimeLastAccess : FTIME;
  933.     fdateLastWrite : FDATE;
  934.     ftimeLastWrite : FTIME;
  935.     cbFile : Longint;
  936.     cbFileAlloc : Longint;
  937.     attrFile : Word;
  938.   end;
  939.   PFILESTATUS = ^TFILESTATUS;
  940.  
  941.   TFILESTATUS2 = record
  942.     fdateCreation : FDATE;
  943.     ftimeCreation : FTIME;
  944.     fdateLastAccess : FDATE;
  945.     ftimeLastAccess : FTIME;
  946.     fdateLastWrite : FDATE;
  947.     ftimeLastWrite : FTIME;
  948.     cbFile : Longint;
  949.     cbFileAlloc : Longint;
  950.     attrFile : Word;
  951.     cbList : Longint;
  952.   end;
  953.   PFILESTATUS2 = ^TFILESTATUS2;
  954.  
  955.   TFILESTATUS3 = record
  956.     fdateCreation : FDATE;
  957.     ftimeCreation : FTIME;
  958.     fdateLastAccess : FDATE;
  959.     ftimeLastAccess : FTIME;
  960.     fdateLastWrite : FDATE;
  961.     ftimeLastWrite : FTIME;
  962.     cbFile : Longint;
  963.     cbFileAlloc : Longint;
  964.     attrFile : Longint;
  965.   end;
  966.   PFILESTATUS3 = ^TFILESTATUS3;
  967.  
  968.   TFILESTATUS4 = record
  969.     fdateCreation : FDATE;
  970.     ftimeCreation : FTIME;
  971.     fdateLastAccess : FDATE;
  972.     ftimeLastAccess : FTIME;
  973.     fdateLastWrite : FDATE;
  974.     ftimeLastWrite : FTIME;
  975.     cbFile : Longint;
  976.     cbFileAlloc : Longint;
  977.     attrFile : Longint;
  978.     cbList : Longint;
  979.   end;
  980.   PFILESTATUS4 = ^TFILESTATUS4;
  981.  
  982.   TFSQBUFFER = record
  983.     iType : Word;
  984.     cbName : Word;
  985.     szName : array[0..1-1] of Char;
  986.     cbFSDName : Word;
  987.     szFSDName : array[0..1-1] of Char;
  988.     cbFSAData : Word;
  989.     rgFSAData : array[0..1-1] of Char;
  990.   end;
  991.   PFSQBUFFER = ^TFSQBUFFER;
  992.  
  993.   TFSQBUFFER2 = record
  994.     iType : Word;
  995.     cbName : Word;
  996.     cbFSDName : Word;
  997.     cbFSAData : Word;
  998.     szName : array[0..1-1] of Char;
  999.     szFSDName : array[0..1-1] of Char;
  1000.     rgFSAData : array[0..1-1] of Char;
  1001.   end;
  1002.   PFSQBUFFER2 = ^TFSQBUFFER2;
  1003.  
  1004.   TSPOOLATTACH = record
  1005.     hNmPipe : Word;
  1006.     ulKey : Longint;
  1007.   end;
  1008.   PSPOOLATTACH = ^TSPOOLATTACH;
  1009.  
  1010.   TVOLUMELABEL = record
  1011.     cch : Byte;
  1012.     szVolLabel : array[0..12-1] of Char;
  1013.   end;
  1014.   PVOLUMELABEL = ^TVOLUMELABEL;
  1015.  
  1016.   TFSINFO = record
  1017.     fdateCreation : FDATE;
  1018.     ftimeCreation : FTIME;
  1019.     vol : TVOLUMELABEL;
  1020.   end;
  1021.   PFSINFO = ^TFSINFO;
  1022.  
  1023.   TFILEFINDBUF = record
  1024.     fdateCreation : FDATE;
  1025.     ftimeCreation : FTIME;
  1026.     fdateLastAccess : FDATE;
  1027.     ftimeLastAccess : FTIME;
  1028.     fdateLastWrite : FDATE;
  1029.     ftimeLastWrite : FTIME;
  1030.     cbFile : Longint;
  1031.     cbFileAlloc : Longint;
  1032.     attrFile : Word;
  1033.     cchName : Char;
  1034.     achName : array[0..CCHMAXPATHCOMP-1] of Char;
  1035.   end;
  1036.   PFILEFINDBUF = ^TFILEFINDBUF;
  1037.  
  1038.   TFILEFINDBUF2 = record
  1039.     fdateCreation : FDATE;
  1040.     ftimeCreation : FTIME;
  1041.     fdateLastAccess : FDATE;
  1042.     ftimeLastAccess : FTIME;
  1043.     fdateLastWrite : FDATE;
  1044.     ftimeLastWrite : FTIME;
  1045.     cbFile : Longint;
  1046.     cbFileAlloc : Longint;
  1047.     attrFile : Word;
  1048.     cbList : Longint;
  1049.     cchName : Char;
  1050.     achName : array[0..CCHMAXPATHCOMP-1] of Char;
  1051.   end;
  1052.   PFILEFINDBUF2 = ^TFILEFINDBUF2;
  1053.  
  1054.   TFILEFINDBUF3 = record
  1055.     oNextEntryOffset : Longint;
  1056.     fdateCreation : FDATE;
  1057.     ftimeCreation : FTIME;
  1058.     fdateLastAccess : FDATE;
  1059.     ftimeLastAccess : FTIME;
  1060.     fdateLastWrite : FDATE;
  1061.     ftimeLastWrite : FTIME;
  1062.     cbFile : Longint;
  1063.     cbFileAlloc : Longint;
  1064.     attrFile : Longint;
  1065.     cchName : Char;
  1066.     achName : array[0..CCHMAXPATHCOMP-1] of Char;
  1067.   end;
  1068.   PFILEFINDBUF3 = ^TFILEFINDBUF3;
  1069.  
  1070.   TFILEFINDBUF4 = record
  1071.     oNextEntryOffset : Longint;
  1072.     fdateCreation : FDATE;
  1073.     ftimeCreation : FTIME;
  1074.     fdateLastAccess : FDATE;
  1075.     ftimeLastAccess : FTIME;
  1076.     fdateLastWrite : FDATE;
  1077.     ftimeLastWrite : FTIME;
  1078.     cbFile : Longint;
  1079.     cbFileAlloc : Longint;
  1080.     attrFile : Longint;
  1081.     cbList : Longint;
  1082.     cchName : Char;
  1083.     achName : array[0..CCHMAXPATHCOMP-1] of Char;
  1084.   end;
  1085.   PFILEFINDBUF4 = ^TFILEFINDBUF4;
  1086.  
  1087.   TFILELOCK = record
  1088.     lOffset : Longint;
  1089.     lRange : Longint;
  1090.   end;
  1091.   PFILELOCK = ^TFILELOCK;
  1092.  
  1093.   TDENA1 = record
  1094.     reserved : Char;
  1095.     cbName : Char;
  1096.     cbValue : Word;
  1097.     szName : array[0..1-1] of Char;
  1098.   end;
  1099.   PDENA1 = ^TDENA1;
  1100.  
  1101.   TDENA2 = TFEA2;
  1102.   PDENA2 = PFEA2;
  1103.  
  1104.  
  1105. (* ---------------------------- DEVICE I/O -------------------------------- *)
  1106.  
  1107. const
  1108.   DEVINFO_PRINTER                         = 0;
  1109.   DEVINFO_RS232                           = 1;
  1110.   DEVINFO_FLOPPY                          = 2;
  1111.   DEVINFO_COPROCESSOR                     = 3;
  1112.   DEVINFO_SUBMODEL                        = 4;
  1113.   DEVINFO_MODEL                           = 5;
  1114.   DEVINFO_ADAPTER                         = 6;
  1115.  
  1116.   INFO_COUNT_PARTITIONABLE_DISKS          = 1;
  1117.   INFO_GETIOCTLHANDLE                     = 2;
  1118.   INFO_FREEIOCTLHANDLE                    = 3;
  1119.  
  1120.   IOCTL_ASYNC                             = $0001;
  1121.   IOCTL_SCR_AND_PTRDRAW                   = $0003;
  1122.   IOCTL_KEYBOARD                          = $0004;
  1123.   IOCTL_PRINTER                           = $0005;
  1124.   IOCTL_LIGHTPEN                          = $0006;
  1125.   IOCTL_POINTINGDEVICE                    = $0007;
  1126.   IOCTL_DISK                              = $0008;
  1127.   IOCTL_PHYSICALDISK                      = $0009;
  1128.   IOCTL_MONITOR                           = $000a;
  1129.   IOCTL_GENERAL                           = $000b;
  1130.  
  1131.   ASYNC_SETBAUDRATE                       = $0041;
  1132.   ASYNC_SETLINECTRL                       = $0042;
  1133.   ASYNC_TRANSMITIMM                       = $0044;
  1134.   ASYNC_SETBREAKOFF                       = $0045;
  1135.   ASYNC_SETMODEMCTRL                      = $0046;
  1136.   ASYNC_STOPTRANSMIT                      = $0047;
  1137.   ASYNC_STARTTRANSMIT                     = $0048;
  1138.   ASYNC_SETBREAKON                        = $004b;
  1139.   ASYNC_SETDCBINFO                        = $0053;
  1140.   ASYNC_GETBAUDRATE                       = $0061;
  1141.   ASYNC_GETLINECTRL                       = $0062;
  1142.   ASYNC_GETCOMMSTATUS                     = $0064;
  1143.   ASYNC_GETLINESTATUS                     = $0065;
  1144.   ASYNC_GETMODEMOUTPUT                    = $0066;
  1145.   ASYNC_GETMODEMINPUT                     = $0067;
  1146.   ASYNC_GETINQUECOUNT                     = $0068;
  1147.   ASYNC_GETOUTQUECOUNT                    = $0069;
  1148.   ASYNC_GETCOMMERROR                      = $006d;
  1149.   ASYNC_GETCOMMEVENT                      = $0072;
  1150.   ASYNC_GETDCBINFO                        = $0073;
  1151.  
  1152.   SCR_ALLOCLDT                            = $0070;
  1153.   SCR_DEALLOCLDT                          = $0071;
  1154.   PTR_GETPTRDRAWADDRESS                   = $0072;
  1155.   SCR_ALLOCLDTOFF                         = $0075;
  1156.  
  1157.   KBD_SETTRANSTABLE                       = $0050;
  1158.   KBD_SETINPUTMODE                        = $0051;
  1159.   KBD_SETINTERIMFLAG                      = $0052;
  1160.   KBD_SETSHIFTSTATE                       = $0053;
  1161.   KBD_SETTYPAMATICRATE                    = $0054;
  1162.   KBD_SETFGNDSCREENGRP                    = $0055;
  1163.   KBD_SETSESMGRHOTKEY                     = $0056;
  1164.   KBD_SETFOCUS                            = $0057;
  1165.   KBD_SETKCB                              = $0058;
  1166.   KBD_SETNLS                              = $005c;
  1167.   KBD_CREATE                              = $005d;
  1168.   KBD_DESTROY                             = $005e;
  1169.   KBD_GETINPUTMODE                        = $0071;
  1170.   KBD_GETINTERIMFLAG                      = $0072;
  1171.   KBD_GETSHIFTSTATE                       = $0073;
  1172.   KBD_READCHAR                            = $0074;
  1173.   KBD_PEEKCHAR                            = $0075;
  1174.   KBD_GETSESMGRHOTKEY                     = $0076;
  1175.   KBD_GETKEYBDTYPE                        = $0077;
  1176.   KBD_GETCODEPAGEID                       = $0078;
  1177.   KBD_XLATESCAN                           = $0079;
  1178.  
  1179.   PRT_QUERYJOBHANDLE                      = $0021;
  1180.   PRT_SETFRAMECTL                         = $0042;
  1181.   PRT_SETINFINITERETRY                    = $0044;
  1182.   PRT_INITPRINTER                         = $0046;
  1183.   PRT_ACTIVATEFONT                        = $0048;
  1184.   PRT_GETFRAMECTL                         = $0062;
  1185.   PRT_GETINFINITERETRY                    = $0064;
  1186.   PRT_GETPRINTERSTATUS                    = $0066;
  1187.   PRT_QUERYACTIVEFONT                     = $0069;
  1188.   PRT_VERIFYFONT                          = $006a;
  1189.  
  1190.   MOU_ALLOWPTRDRAW                        = $0050;
  1191.   MOU_UPDATEDISPLAYMODE                   = $0051;
  1192.   MOU_SCREENSWITCH                        = $0052;
  1193.   MOU_SETSCALEFACTORS                     = $0053;
  1194.   MOU_SETEVENTMASK                        = $0054;
  1195.   MOU_SETHOTKEYBUTTON                     = $0055;
  1196.   MOU_SETPTRSHAPE                         = $0056;
  1197.   MOU_DRAWPTR                             = $0057;
  1198.   MOU_REMOVEPTR                           = $0058;
  1199.   MOU_SETPTRPOS                           = $0059;
  1200.   MOU_SETPROTDRAWADDRESS                  = $005a;
  1201.   MOU_SETREALDRAWADDRESS                  = $005b;
  1202.   MOU_SETMOUSTATUS                        = $005c;
  1203.   MOU_DISPLAYMODECHANGE                   = $005d;
  1204.   MOU_GETBUTTONCOUNT                      = $0060;
  1205.   MOU_GETMICKEYCOUNT                      = $0061;
  1206.   MOU_GETMOUSTATUS                        = $0062;
  1207.   MOU_READEVENTQUE                        = $0063;
  1208.   MOU_GETQUESTATUS                        = $0064;
  1209.   MOU_GETEVENTMASK                        = $0065;
  1210.   MOU_GETSCALEFACTORS                     = $0066;
  1211.   MOU_GETPTRPOS                           = $0067;
  1212.   MOU_GETPTRSHAPE                         = $0068;
  1213.   MOU_GETHOTKEYBUTTON                     = $0069;
  1214.   MOU_VER                                 = $006a;
  1215.  
  1216.   DSK_LOCKDRIVE                           = $0000;
  1217.   DSK_UNLOCKDRIVE                         = $0001;
  1218.   DSK_REDETERMINEMEDIA                    = $0002;
  1219.   DSK_SETLOGICALMAP                       = $0003;
  1220.   DSK_BLOCKREMOVABLE                      = $0020;
  1221.   DSK_GETLOGICALMAP                       = $0021;
  1222.   DSK_SETDEVICEPARAMS                     = $0043;
  1223.   DSK_WRITETRACK                          = $0044;
  1224.   DSK_FORMATVERIFY                        = $0045;
  1225.   DSK_GETDEVICEPARAMS                     = $0063;
  1226.   DSK_READTRACK                           = $0064;
  1227.   DSK_VERIFYTRACK                         = $0065;
  1228.  
  1229.   PDSK_LOCKPHYSDRIVE                      = $0000;
  1230.   PDSK_UNLOCKPHYSDRIVE                    = $0001;
  1231.   PDSK_WRITEPHYSTRACK                     = $0044;
  1232.   PDSK_GETPHYSDEVICEPARAMS                = $0063;
  1233.   PDSK_READPHYSTRACK                      = $0064;
  1234.   PDSK_VERIFYPHYSTRACK                    = $0065;
  1235.  
  1236.   MON_REGISTERMONITOR                     = $0040;
  1237.  
  1238.   DEV_FLUSHINPUT                          = $0001;
  1239.   DEV_FLUSHOUTPUT                         = $0002;
  1240.   DEV_QUERYMONSUPPORT                     = $0060;
  1241.  
  1242.   RX_QUE_OVERRUN                          = $0001;
  1243.   RX_HARDWARE_OVERRUN                     = $0002;
  1244.   PARITY_ERROR                            = $0004;
  1245.   FRAMING_ERROR                           = $0008;
  1246.  
  1247.   CHAR_RECEIVED                           = $0001;
  1248.   LAST_CHAR_SENT                          = $0004;
  1249.   CTS_CHANGED                             = $0008;
  1250.   DSR_CHANGED                             = $0010;
  1251.   DCD_CHANGED                             = $0020;
  1252.   BREAK_DETECTED                          = $0040;
  1253.   ERROR_OCCURRED                          = $0080;
  1254.   RI_DETECTED                             = $0100;
  1255.  
  1256.   TX_WAITING_FOR_CTS                      = $0001;
  1257.   TX_WAITING_FOR_DSR                      = $0002;
  1258.   TX_WAITING_FOR_DCD                      = $0004;
  1259.   TX_WAITING_FOR_XON                      = $0008;
  1260.   TX_WAITING_TO_SEND_XON                  = $0010;
  1261.   TX_WAITING_WHILE_BREAK_ON               = $0020;
  1262.   TX_WAITING_TO_SEND_IMM                  = $0040;
  1263.   RX_WAITING_FOR_DSR                      = $0080;
  1264.  
  1265.   WRITE_REQUEST_QUEUED                    = $0001;
  1266.   DATA_IN_TX_QUE                          = $0002;
  1267.   HARDWARE_TRANSMITTING                   = $0004;
  1268.   CHAR_READY_TO_SEND_IMM                  = $0008;
  1269.   WAITING_TO_SEND_XON                     = $0010;
  1270.   WAITING_TO_SEND_XOFF                    = $0020;
  1271.  
  1272.   CTS_ON                                  = $10;
  1273.   DSR_ON                                  = $20;
  1274.   RI_ON                                   = $40;
  1275.   DCD_ON                                  = $80;
  1276.  
  1277.   MODE_DTR_CONTROL                        = $01;
  1278.   MODE_DTR_HANDSHAKE                      = $02;
  1279.   MODE_CTS_HANDSHAKE                      = $08;
  1280.   MODE_DSR_HANDSHAKE                      = $10;
  1281.   MODE_DCD_HANDSHAKE                      = $20;
  1282.   MODE_DSR_SENSITIVITY                    = $40;
  1283.  
  1284.   MODE_AUTO_TRANSMIT                      = $01;
  1285.   MODE_AUTO_RECEIVE                       = $02;
  1286.   MODE_ERROR_CHAR                         = $04;
  1287.   MODE_NULL_STRIPPING                     = $08;
  1288.   MODE_BREAK_CHAR                         = $10;
  1289.   MODE_RTS_CONTROL                        = $40;
  1290.   MODE_RTS_HANDSHAKE                      = $80;
  1291.   MODE_TRANSMIT_TOGGLE                    = $c0;
  1292.  
  1293.   MODE_NO_WRITE_TIMEOUT                   = $01;
  1294.   MODE_READ_TIMEOUT                       = $02;
  1295.   MODE_WAIT_READ_TIMEOUT                  = $04;
  1296.   MODE_NOWAIT_READ_TIMEOUT                = $06;
  1297.  
  1298.   DTR_ON                                  = $01;
  1299.   RTS_ON                                  = $02;
  1300.  
  1301.   DTR_OFF                                 = $fe;
  1302.   RTS_OFF                                 = $fd;
  1303.  
  1304.   ASCII_MODE                              = $00;
  1305.   BINARY_MODE                             = $80;
  1306.  
  1307.   CONVERSION_REQUEST                      = $20;
  1308.   INTERIM_CHAR                            = $80;
  1309.  
  1310.   HOTKEY_MAX_COUNT                        = $0000;
  1311.   HOTKEY_CURRENT_COUNT                    = $0001;
  1312.  
  1313.   KBD_DATA_RECEIVED                       = $0001;
  1314.   KBD_DATA_BINARY                         = $8000;
  1315.  
  1316.   KBD_READ_WAIT                           = $0000;
  1317.   KBD_READ_NOWAIT                         = $8000;
  1318.  
  1319.   SHIFT_REPORT_MODE                       = $01;
  1320.  
  1321.  
  1322.   RIGHTSHIFT                              = $0001;
  1323.   LEFTSHIFT                               = $0002;
  1324.   CONTROL                                 = $0004;
  1325.   ALT                                     = $0008;
  1326.   SCROLLLOCK_ON                           = $0010;
  1327.   NUMLOCK_ON                              = $0020;
  1328.   CAPSLOCK_ON                             = $0040;
  1329.   INSERT_ON                               = $0080;
  1330.   LEFTCONTROL                             = $0100;
  1331.   LEFTALT                                 = $0200;
  1332.   RIGHTCONTROL                            = $0400;
  1333.   RIGHTALT                                = $0800;
  1334.   SCROLLLOCK                              = $1000;
  1335.   NUMLOCK                                 = $2000;
  1336.   CAPSLOCK                                = $4000;
  1337.   SYSREQ                                  = $8000;
  1338.  
  1339.   PRINTER_TIMEOUT                         = $0001;
  1340.   PRINTER_IO_ERROR                        = $0008;
  1341.   PRINTER_SELECTED                        = $0010;
  1342.   PRINTER_OUT_OF_PAPER                    = $0020;
  1343.   PRINTER_ACKNOWLEDGED                    = $0040;
  1344.   PRINTER_NOT_BUSY                        = $0080;
  1345.  
  1346.   MOUSE_MOTION                            = $0001;
  1347.   MOUSE_MOTION_WITH_BN1_DOWN              = $0002;
  1348.   MOUSE_BN1_DOWN                          = $0004;
  1349.   MOUSE_MOTION_WITH_BN2_DOWN              = $0008;
  1350.   MOUSE_BN2_DOWN                          = $0010;
  1351.   MOUSE_MOTION_WITH_BN3_DOWN              = $0020;
  1352.   MOUSE_BN3_DOWN                          = $0040;
  1353.  
  1354.   MHK_BUTTON1                             = $0001;
  1355.   MHK_BUTTON2                             = $0002;
  1356.   MHK_BUTTON3                             = $0004;
  1357.  
  1358.   MOU_NOWAIT                              = $0000;
  1359.   MOU_WAIT                                = $0001;
  1360.  
  1361.   MHK_NO_HOTKEY                           = $0000;
  1362.  
  1363.   MOUSE_QUEUEBUSY                         = $0001;
  1364.   MOUSE_BLOCKREAD                         = $0002;
  1365.   MOUSE_FLUSH                             = $0004;
  1366.   MOUSE_UNSUPPORTED_MODE                  = $0008;
  1367.   MOUSE_DISABLED                          = $0100;
  1368.   MOUSE_MICKEYS                           = $0200;
  1369.  
  1370.   BUILD_BPB_FROM_MEDIUM                   = $00;
  1371.   REPLACE_BPB_FOR_DEVICE                  = $01;
  1372.   REPLACE_BPB_FOR_MEDIUM                  = $02;
  1373.  
  1374.   DEVTYPE_48TPI                           = $0000;
  1375.   DEVTYPE_96TPI                           = $0001;
  1376.   DEVTYPE_35                              = $0002;
  1377.   DEVTYPE_8SD                             = $0003;
  1378.   DEVTYPE_8DD                             = $0004;
  1379.   DEVTYPE_FIXED                           = $0005;
  1380.   DEVTYPE_TAPE                            = $0006;
  1381.   DEVTYPE_UNKNOWN                         = $0007;
  1382.  
  1383. type
  1384.   HMONITOR = SHANDLE;
  1385.  
  1386.   TDCBINFO = record
  1387.     usWriteTimeout : Word;
  1388.     usReadTimeout : Word;
  1389.     fbCtlHndShake : Byte;
  1390.     fbFlowReplace : Byte;
  1391.     fbTimeout : Byte;
  1392.     bErrorReplacementChar : Byte;
  1393.     bBreakReplacementChar : Byte;
  1394.     bXONChar : Byte;
  1395.     bXOFFChar : Byte;
  1396.   end;
  1397.   PDCBINFO = ^TDCBINFO;
  1398.  
  1399.   TLINECONTROL = record
  1400.     bDataBits : Byte;
  1401.     bParity : Byte;
  1402.     bStopBits : Byte;
  1403.     fTransBreak : Byte;
  1404.   end;
  1405.   PLINECONTROL = ^TLINECONTROL;
  1406.  
  1407.   TMODEMSTATUS = record
  1408.     fbModemOn : Byte;
  1409.     fbModemOff : Byte;
  1410.   end;
  1411.   PMODEMSTATUS = ^TMODEMSTATUS;
  1412.  
  1413.   TKBDTYPE = record
  1414.     usType : Word;
  1415.     reserved1 : Word;
  1416.     reserved2 : Word;
  1417.   end;
  1418.   PKBDTYPE = ^TKBDTYPE;
  1419.  
  1420.   TRATEDELAY = record
  1421.     usDelay : Word;
  1422.     usRate : Word;
  1423.   end;
  1424.   PRATEDELAY = ^TRATEDELAY;
  1425.  
  1426.   TCODEPAGEINFO = record
  1427.     pbTransTable : PBYTE;
  1428.     idCodePage : Word;
  1429.     idTable : Word;
  1430.   end;
  1431.  
  1432.   TCPID = record
  1433.     idCodePage : Word;
  1434.     Reserved : Word;
  1435.   end;
  1436.   PCPID = ^TCPID;
  1437.  
  1438.   TSHIFTSTATE = record
  1439.     fsState : Word;
  1440.     fNLS : Byte;
  1441.   end;
  1442.   PSHIFTSTATE = ^TSHIFTSTATE;
  1443.  
  1444.   THOTKEY = record
  1445.     fsHotKey : Word;
  1446.     uchScancodeMake : Char;
  1447.     uchScancodeBreak : Char;
  1448.     idHotKey : Word;
  1449.   end;
  1450.   PHOTKEY = ^THOTKEY;
  1451.  
  1452.   TPTRDRAWFUNCTION = record
  1453.     usReturnCode : Word;
  1454.     pfnDraw : PFN;
  1455.     pchDataSeg : PCH;
  1456.   end;
  1457.   PPTRDRAWFUNCTION = ^TPTRDRAWFUNCTION;
  1458.  
  1459.   TPTRDRAWADDRESS = record
  1460.     reserved : Word;
  1461.     ptrdfnc : TPTRDRAWFUNCTION;
  1462.   end;
  1463.   PPTRDRAWADDRESS = ^TPTRDRAWADDRESS;
  1464.  
  1465.   TPTRDRAWDATA = record
  1466.     cb : Word;
  1467.     usConfig : Word;
  1468.     usFlag : Word;
  1469.   end;
  1470.   PPTRDRAWDATA = ^TPTRDRAWDATA;
  1471.  
  1472.   TTRACKLAYOUT = record
  1473.     bCommand : Byte;
  1474.     usHead : Word;
  1475.     usCylinder : Word;
  1476.     usFirstSector : Word;
  1477.     cSectors : Word;
  1478.     usSectorNumber : Word;
  1479.     usSectorSize : Word;
  1480.     TrackTable : array[0..1-1] of Byte;
  1481.   end;
  1482.   PTRACKLAYOUT = ^TTRACKLAYOUT;
  1483.  
  1484.   TTRACKFORMAT = record
  1485.     bCommand : Byte;
  1486.     usHead : Word;
  1487.     usCylinder : Word;
  1488.     usReserved : Word;
  1489.     cSectors : Word;
  1490.     bCylinder : Byte;
  1491.     bHead : Byte;
  1492.     idSector : Byte;
  1493.     bBytesSector : Byte;
  1494.     FormatTable : array[0..1-1] of Byte;
  1495.   end;
  1496.   PTRACKFORMAT = ^TTRACKFORMAT;
  1497.  
  1498.   TBIOSPARAMETERBLOCK = record
  1499.     usBytesPerSector : Word;
  1500.     bSectorsPerCluster : Byte;
  1501.     usReservedSectors : Word;
  1502.     cFATs : Byte;
  1503.     cRootEntries : Word;
  1504.     cSectors : Word;
  1505.     bMedia : Byte;
  1506.     usSectorsPerFAT : Word;
  1507.     usSectorsPerTrack : Word;
  1508.     cHeads : Word;
  1509.     cHiddenSectors : Longint;
  1510.     cLargeSectors : Longint;
  1511.     abReserved : array[0..6-1] of Byte;
  1512.     cCylinders : Word;
  1513.     bDeviceType : Byte;
  1514.     fsDeviceAttr : Word;
  1515.   end;
  1516.   PBIOSPARAMETERBLOCK = ^TBIOSPARAMETERBLOCK;
  1517.  
  1518.   TDEVICEPARAMETERBLOCK = record
  1519.     reserved1 : Word;
  1520.     cCylinders : Word;
  1521.     cHeads : Word;
  1522.     cSectorsPerTrack : Word;
  1523.     reserved2 : Word;
  1524.     reserved3 : Word;
  1525.     reserved4 : Word;
  1526.     reserved5 : Word;
  1527.   end;
  1528.   PDEVICEPARAMETERBLOCK = ^TDEVICEPARAMETERBLOCK;
  1529.  
  1530.   TMONITORPOSITION = record
  1531.     fPosition : Word;
  1532.     index : Word;
  1533.     pbInBuf : Longint;
  1534.     offOutBuf : Word;
  1535.   end;
  1536.   PMONITORPOSITION = ^TMONITORPOSITION;
  1537.  
  1538.   TFRAME = record
  1539.     bCharsPerLine : Byte;
  1540.     bLinesPerInch : Byte;
  1541.   end;
  1542.   PFRAME = ^TFRAME;
  1543.  
  1544.   TLDTADDRINFO = record
  1545.     pulPhysAddr : PLongint;
  1546.     cb : Word;
  1547.   end;
  1548.   PLDTADDRINFO = ^TLDTADDRINFO;
  1549.  
  1550.   TSCREENGROUP = record
  1551.     idScreenGrp : Word;
  1552.     fTerminate : Word;
  1553.   end;
  1554.   PSCREENGROUP = ^TSCREENGROUP;
  1555.  
  1556.   TRXQUEUE = record
  1557.     cch : Word;
  1558.     cb : Word;
  1559.   end;
  1560.   PRXQUEUE = ^TRXQUEUE;
  1561.  
  1562.   PGlobalInfoSeg = ^TGlobalInfoSeg;
  1563.   TGlobalInfoSeg = Record
  1564.                      time                : LongInt;
  1565.                      msecs               : LongInt;
  1566.                      hour                : Byte;
  1567.                      minutes             : Byte;
  1568.                      seconds             : Byte;
  1569.                      hundredths          : Byte;
  1570.                      timezone            : Word;
  1571.                      cusecTimerInterval  : Word;
  1572.                      day                 : Byte;
  1573.                      month               : Byte;
  1574.                      year                : Word;
  1575.                      weekday             : Byte;
  1576.                      uchMajorVersion     : Byte;
  1577.                      uchMinorVersion     : Byte;
  1578.                      chRevisionLetter    : Byte;
  1579.                      sgCurrent           : Byte;
  1580.                      sgMax               : Byte;
  1581.                      cHugeShift          : Byte;
  1582.                      fProtectModeOnly    : Byte;
  1583.                      pidForeground       : Word;
  1584.                      fDynamicSched       : Byte;
  1585.                      csecMaxWait         : Byte;
  1586.                      cmsecMinSlice       : Word;
  1587.                      cmsecMaxSlice       : Word;
  1588.                      bootdrive           : Word;
  1589.                      amecRAS             : Array[1..32] of Byte;
  1590.                      csgWindowableVioMax : Byte;
  1591.                      csgPMMax            : Byte;
  1592.                    End;
  1593.   PLocalInfoSeg = ^TLocalInfoSeg;
  1594.   TLocalInfoSeg  = Record
  1595.                      pidCurrent          : PID;
  1596.                      pidParent           : PID;
  1597.                      prtyCurrent         : Word;
  1598.                      tidCurrent          : TID;
  1599.                      sgCurrent           : Word;
  1600.                      rfProcStatus        : Byte;
  1601.                      dummy1              : Byte;
  1602.                      fForeground         : WordBool;
  1603.                      typeProcess         : Byte;
  1604.                      dummy2              : Byte;
  1605.                      selEnvironment      : Sel;
  1606.                      offCmdLine          : Word;
  1607.                      cbDataSegment       : Word;
  1608.                      cbStack             : Word;
  1609.                      cbHeap              : Word;
  1610.                      hmod                : Word;
  1611.                      selDS               : Sel;
  1612.                    End;
  1613.  
  1614.  
  1615. (* -------------------- NATIONAL LANGUAGE SUPPORT ------------------------- *)
  1616.  
  1617. type
  1618.   TCOUNTRYCODE = record
  1619.     country : Longint;
  1620.     codepage : Longint;
  1621.   end;
  1622.   PCOUNTRYCODE = ^TCOUNTRYCODE;
  1623.  
  1624.   TCOUNTRYINFO = record
  1625.     country : Longint;
  1626.     codepage : Longint;
  1627.     fsDateFmt : Longint;
  1628.     szCurrency : array[0..5-1] of Char;
  1629.     szThousandsSeparator : array[0..2-1] of Char;
  1630.     szDecimal : array[0..2-1] of Char;
  1631.     szDateSeparator : array[0..2-1] of Char;
  1632.     szTimeSeparator : array[0..2-1] of Char;
  1633.     fsCurrencyFmt : Char;
  1634.     cDecimalPlace : Char;
  1635.     fsTimeFmt : Char;
  1636.     abReserved1 : array[0..2-1] of Word;
  1637.     szDataSeparator : array[0..2-1] of Char;
  1638.     abReserved2 : array[0..5-1] of Word;
  1639.   end;
  1640.   PCOUNTRYINFO = ^TCOUNTRYINFO;
  1641.  
  1642.  
  1643. (* -------------------------- DYNAMIC LINKING ----------------------------- *)
  1644.  
  1645. const
  1646.   PT_16BIT                                = 0;
  1647.   PT_32BIT                                = 1;
  1648.  
  1649.  
  1650.  
  1651. (* ----------------------------- RESOURCES -------------------------------- *)
  1652.  
  1653. const
  1654.   RT_POINTER                              = 1;
  1655.   RT_BITMAP                               = 2;
  1656.   RT_MENU                                 = 3;
  1657.   RT_DIALOG                               = 4;
  1658.   RT_STRING                               = 5;
  1659.   RT_FONTDIR                              = 6;
  1660.   RT_FONT                                 = 7;
  1661.   RT_ACCELTABLE                           = 8;
  1662.   RT_RCDATA                               = 9;
  1663.   RT_MESSAGE                              = 10;
  1664.   RT_DLGINCLUDE                           = 11;
  1665.   RT_VKEYTBL                              = 12;
  1666.   RT_KEYTBL                               = 13;
  1667.   RT_CHARTBL                              = 14;
  1668.   RT_DISPLAYINFO                          = 15;
  1669.   RT_FKASHORT                             = 16;
  1670.   RT_FKALONG                              = 17;
  1671.   RT_HELPTABLE                            = 18;
  1672.   RT_HELPSUBTABLE                         = 19;
  1673.   RT_FDDIR                                = 20;
  1674.   RT_FD                                   = 21;
  1675.   RT_MAX                                  = 22;
  1676.  
  1677.   RF_ORDINALID                            = $80000000;
  1678.  
  1679.  
  1680. (* -------------------------------- TASKS --------------------------------- *)
  1681.  
  1682. const
  1683.   DCWA_PROCESS                            = 0;
  1684.   DCWA_PROCESSTREE                        = 1;
  1685.  
  1686.   DCWW_WAIT                               = 0;
  1687.   DCWW_NOWAIT                             = 1;
  1688.  
  1689.   DKP_PROCESSTREE                         = 0;
  1690.   DKP_PROCESS                             = 1;
  1691.  
  1692.   EXEC_SYNC                               = 0;
  1693.   EXEC_ASYNC                              = 1;
  1694.   EXEC_ASYNCRESULT                        = 2;
  1695.   EXEC_TRACE                              = 3;
  1696.   EXEC_BACKGROUND                         = 4;
  1697.   EXEC_LOAD                               = 5;
  1698.   EXEC_ASYNCRESULTDB                      = 6;
  1699.  
  1700.   EXIT_THREAD                             = 0;
  1701.   EXIT_PROCESS                            = 1;
  1702.  
  1703.   EXLST_ADD                               = 1;
  1704.   EXLST_REMOVE                            = 2;
  1705.   EXLST_EXIT                              = 3;
  1706.  
  1707.   PRTYC_NOCHANGE                          = 0;
  1708.   PRTYC_IDLETIME                          = 1;
  1709.   PRTYC_REGULAR                           = 2;
  1710.   PRTYC_TIMECRITICAL                      = 3;
  1711.   PRTYC_FOREGROUNDSERVER                  = 4;
  1712.  
  1713.   PRTYD_MINIMUM                           = (-31);
  1714.   PRTYD_MAXIMUM                           = 31;
  1715.  
  1716.   PRTYS_PROCESS                           = 0;
  1717.   PRTYS_PROCESSTREE                       = 1;
  1718.   PRTYS_THREAD                            = 2;
  1719.  
  1720.   TC_EXIT                                 = 0;
  1721.   TC_HARDERROR                            = 1;
  1722.   TC_TRAP                                 = 2;
  1723.   TC_KILLPROCESS                          = 3;
  1724.   TC_EXCEPTION                            = 4;
  1725.  
  1726. type
  1727.   TRESULTCODES = record
  1728.     codeTerminate : Longint;
  1729.     codeResult : Longint;
  1730.   end;
  1731.   PRESULTCODES = ^TRESULTCODES;
  1732.  
  1733.   TTIB2 = record
  1734.     tib2_ultid : Longint;
  1735.     tib2_ulpri : Longint;
  1736.     tib2_version : Longint;
  1737.     tib2_usMCCount : Word;
  1738.     tib2_fMCForceFlag : Word;
  1739.   end;
  1740.   PTIB2 = ^TTIB2;
  1741.  
  1742.   TTIB = record
  1743.     tib_pexchain : Pointer;
  1744.     tib_pstack : Pointer;
  1745.     tib_pstacklimit : Pointer;
  1746.     tib_ptib2 : PTIB2;
  1747.     tib_version : Longint;
  1748.     tib_ordinal : Longint;
  1749.   end;
  1750.   PTIB = ^TTIB;
  1751.   PPTIB = ^PTIB;
  1752.  
  1753.   TPIB = record
  1754.     pib_ulpid : Longint;
  1755.     pib_ulppid : Longint;
  1756.     pib_hmte : Longint;
  1757.     pib_pchcmd : PChar;
  1758.     pib_pchenv : PChar;
  1759.     pib_flstatus : Longint;
  1760.     pib_ultype : Longint;
  1761.   end;
  1762.   PPIB = ^TPIB;
  1763.   PPPIB = ^PPIB;
  1764.  
  1765.   TFNTHREAD = procedure;
  1766.   PFNTHREAD = ^TFNTHREAD;
  1767.   TFNEXITLIST = procedure;
  1768.   PFNEXITLIST = ^PFNEXITLIST;
  1769.  
  1770.   TPIDINFO = record
  1771.     pid : PID;
  1772.     tid : TID;
  1773.     pidParent : PID;
  1774.   end;
  1775.   PPIDINFO = ^TPIDINFO;
  1776.  
  1777.  
  1778. (* ------------------------------ SESSIONS -------------------------------- *)
  1779.  
  1780. const
  1781.   SSF_RELATED_INDEPENDENT                 = 0;
  1782.   SSF_RELATED_CHILD                       = 1;
  1783.  
  1784.   SSF_FGBG_FORE                           = 0;
  1785.   SSF_FGBG_BACK                           = 1;
  1786.  
  1787.   SSF_TRACEOPT_NONE                       = 0;
  1788.   SSF_TRACEOPT_TRACE                      = 1;
  1789.   SSF_TRACEOPT_TRACEALL                   = 2;
  1790.  
  1791.   SSF_INHERTOPT_SHELL                     = 0;
  1792.   SSF_INHERTOPT_PARENT                    = 1;
  1793.  
  1794.   SSF_TYPE_DEFAULT                        = 0;
  1795.   SSF_TYPE_FULLSCREEN                     = 1;
  1796.   SSF_TYPE_WINDOWABLEVIO                  = 2;
  1797.   SSF_TYPE_PM                             = 3;
  1798.   SSF_TYPE_VDM                            = 4;
  1799.   SSF_TYPE_GROUP                          = 5;
  1800.   SSF_TYPE_DLL                            = 6;
  1801.   SSF_TYPE_WINDOWEDVDM                    = 7;
  1802.   SSF_TYPE_PDD                            = 8;
  1803.   SSF_TYPE_VDD                            = 9;
  1804.  
  1805.   SSF_CONTROL_VISIBLE                     = $0000;
  1806.   SSF_CONTROL_INVISIBLE                   = $0001;
  1807.   SSF_CONTROL_MAXIMIZE                    = $0002;
  1808.   SSF_CONTROL_MINIMIZE                    = $0004;
  1809.   SSF_CONTROL_NOAUTOCLOSE                 = $0008;
  1810.   SSF_CONTROL_SETPOS                      = $8000;
  1811.  
  1812.   SET_SESSION_UNCHANGED                   = 0;
  1813.   SET_SESSION_SELECTABLE                  = 1;
  1814.   SET_SESSION_NON_SELECTABLE              = 2;
  1815.   SET_SESSION_BOND                        = 1;
  1816.   SET_SESSION_NO_BOND                     = 2;
  1817.  
  1818.   STOP_SESSION_SPECIFIED                  = 0;
  1819.   STOP_SESSION_ALL                        = 1;
  1820.  
  1821.   FAPPTYP_NOTSPEC                         = $0000;
  1822.   FAPPTYP_NOTWINDOWCOMPAT                 = $0001;
  1823.   FAPPTYP_WINDOWCOMPAT                    = $0002;
  1824.   FAPPTYP_WINDOWAPI                       = $0003;
  1825.   FAPPTYP_BOUND                           = $0008;
  1826.   FAPPTYP_DLL                             = $0010;
  1827.   FAPPTYP_DOS                             = $0020;
  1828.   FAPPTYP_PHYSDRV                         = $0040;
  1829.   FAPPTYP_VIRTDRV                         = $0080;
  1830.   FAPPTYP_PROTDLL                         = $0100;
  1831.   FAPPTYP_WINDOWSREAL                     = $0200;
  1832.   FAPPTYP_WINDOWSPROT                     = $0400;
  1833.   FAPPTYP_32BIT                           = $4000;
  1834.   FAPPTYP_EXETYPE                         = $0003;
  1835.   FAPPTYP_RESERVED                        = ( not (FAPPTYP_WINDOWAPI  or  FAPPTYP_BOUND  or  
  1836.     FAPPTYP_DLL  or  FAPPTYP_DOS  or  
  1837.     FAPPTYP_PHYSDRV  or  FAPPTYP_VIRTDRV  or
  1838.     FAPPTYP_PROTDLL  or  FAPPTYP_32BIT));
  1839.  
  1840. type
  1841.   TSTARTDATA = record
  1842.     Length : Word;
  1843.     Related : Word;
  1844.     FgBg : Word;
  1845.     TraceOpt : Word;
  1846.     PgmTitle : PChar;
  1847.     PgmName : PChar;
  1848.     PgmInputs : PBYTE;
  1849.     TermQ : PBYTE;
  1850.     Environment : PBYTE;
  1851.     InheritOpt : Word;
  1852.     SessionType : Word;
  1853.     IconFile : PChar;
  1854.     PgmHandle : Longint;
  1855.     PgmControl : Word;
  1856.     InitXPos : Word;
  1857.     InitYPos : Word;
  1858.     InitXSize : Word;
  1859.     InitYSize : Word;
  1860.     Reserved : Word;
  1861.     ObjectBuffer : PChar;
  1862.     ObjectBuffLen : Longint;
  1863.   end;
  1864.   PSTARTDATA = ^TSTARTDATA;
  1865.  
  1866.   TSTATUSDATA = record
  1867.     Length : Word;
  1868.     SelectInd : Word;
  1869.     BondInd : Word;
  1870.   end;
  1871.   PSTATUSDATA = ^TSTATUSDATA;
  1872.  
  1873.  
  1874. (* ----------------------------- SEMAPHORES ------------------------------- *)
  1875.  
  1876. const
  1877.   SEM_INDEFINITE_WAIT                     = (-1);
  1878.   SEM_IMMEDIATE_RETURN                    = 0;
  1879.  
  1880.   DC_SEM_SHARED                           = $01;
  1881.   DCMW_WAIT_ANY                           = $02;
  1882.   DCMW_WAIT_ALL                           = $04;
  1883.  
  1884. type
  1885.   HEV = Longint;
  1886.   PHEV = ^HEV;
  1887.  
  1888.  
  1889. type
  1890.   HMTX = Longint;
  1891.   PHMTX = ^HMTX;
  1892.  
  1893.  
  1894. type
  1895.   HMUX = Longint;
  1896.   PHMUX = ^HMUX;
  1897.  
  1898.   HSEM = Pointer;
  1899.   PHSEM = ^HSEM;
  1900.  
  1901.   HSYSSEM = Pointer;
  1902.   PHSYSSEM = ^HSYSSEM; { 1.x }
  1903.  
  1904.   TSEMRECORD = record
  1905.     hsemCur : HSEM;
  1906.     ulUser : Longint;
  1907.   end;
  1908.   PSEMRECORD = ^TSEMRECORD;
  1909.  
  1910.   TDOSFSRSEM = record
  1911.     fs_Length : word;
  1912.     fs_ProcID : PID;
  1913.     fs_ThrdID : TID;
  1914.     fs_UseCount : word;
  1915.     fs_Client : word;
  1916.     fs_RAMSem : longint;
  1917.   end;
  1918.  
  1919.  
  1920. (* ---------------------------- NAMED PIPES ------------------------------- *)
  1921.  
  1922. const
  1923.   NP_INDEFINITE_WAIT                      = (-1);
  1924.   NP_DEFAULT_WAIT                         = 0;
  1925.  
  1926.   NP_STATE_DISCONNECTED                   = 1;
  1927.   NP_STATE_LISTENING                      = 2;
  1928.   NP_STATE_CONNECTED                      = 3;
  1929.   NP_STATE_CLOSING                        = 4;
  1930.  
  1931.   NP_ACCESS_INBOUND                       = $0000;
  1932.   NP_ACCESS_OUTBOUND                      = $0001;
  1933.   NP_ACCESS_DUPLEX                        = $0002;
  1934.   NP_INHERIT                              = $0000;
  1935.   NP_NOINHERIT                            = $0080;
  1936.   NP_WRITEBEHIND                          = $0000;
  1937.   NP_NOWRITEBEHIND                        = $4000;
  1938.  
  1939.   NP_READMODE_BYTE                        = $0000;
  1940.   NP_READMODE_MESSAGE                     = $0100;
  1941.   NP_TYPE_BYTE                            = $0000;
  1942.   NP_TYPE_MESSAGE                         = $0400;
  1943.   NP_END_CLIENT                           = $0000;
  1944.   NP_END_SERVER                           = $4000;
  1945.   NP_WAIT                                 = $0000;
  1946.   NP_NOWAIT                               = $8000;
  1947.   NP_UNLIMITED_INSTANCES                  = $00ff;
  1948.  
  1949.   NPSS_EOI                                = 0;
  1950.   NPSS_RDATA                              = 1;
  1951.   NPSS_WSPACE                             = 2;
  1952.   NPSS_CLOSE                              = 3;
  1953.  
  1954.   NPSS_WAIT                               = $0001;
  1955.  
  1956. type
  1957.   TAVAILDATA = record
  1958.     cbpipe : Word;
  1959.     cbmessage : Word;
  1960.   end;
  1961.   PAVAILDATA = ^TAVAILDATA;
  1962.  
  1963.   TPIPEINFO = record
  1964.     cbOut : Word;
  1965.     cbIn : Word;
  1966.     cbMaxInst : Byte;
  1967.     cbCurInst : Byte;
  1968.     cbName : Byte;
  1969.     szName : array[0..1-1] of Char;
  1970.   end;
  1971.   PPIPEINFO = ^TPIPEINFO;
  1972.  
  1973.   TPIPESEMSTATE = record
  1974.     fStatus : Byte;
  1975.     fFlag : Byte;
  1976.     usKey : Word;
  1977.     usAvail : Word;
  1978.   end;
  1979.   PPIPESEMSTATE = ^TPIPESEMSTATE;
  1980.  
  1981.  
  1982. (* ------------------------------- QUEUES --------------------------------- *)
  1983.  
  1984. const
  1985.   QUE_FIFO                                = $0000;
  1986.   QUE_LIFO                                = $0001;
  1987.   QUE_PRIORITY                            = $0002;
  1988.   QUE_NOCONVERT_ADDRESS                   = $0000;
  1989.   QUE_CONVERT_ADDRESS                     = $0004;
  1990.  
  1991. type
  1992.   TREQUESTDATA = record
  1993.     pid : PID;
  1994.     ulData : Longint;
  1995.   end;
  1996.   PREQUESTDATA = ^TREQUESTDATA;
  1997.  
  1998.  
  1999. (* --------------------------- EXCEPTIONS --------------------------------- *)
  2000.  
  2001. const
  2002.   CONTEXT_CONTROL                         = $0001;
  2003.   CONTEXT_INTEGER                         = $0002;
  2004.   CONTEXT_SEGMENTS                        = $0004;
  2005.   CONTEXT_FLOATING_POINT                  = $0008;
  2006.   CONTEXT_FULL                            = (CONTEXT_CONTROL  or  CONTEXT_INTEGER  or
  2007.     CONTEXT_SEGMENTS  or  CONTEXT_FLOATING_POINT);
  2008.  
  2009.   EH_NONCONTINUABLE                       = $0001;
  2010.   EH_UNWINDING                            = $0002;
  2011.   EH_EXIT_UNWIND                          = $0004;
  2012.   EH_STACK_INVALID                        = $0008;
  2013.   EH_NESTED_CALL                          = $0010;
  2014.  
  2015.   SIG_UNSETFOCUS                          = 0;
  2016.   SIG_SETFOCUS                            = 1;
  2017.  
  2018.   UNWIND_ALL                              = 0;
  2019.  
  2020.   XCPT_CONTINUE_SEARCH                    = $00000000;
  2021.   XCPT_CONTINUE_EXECUTION                 = $ffffffff;
  2022.   XCPT_CONTINUE_STOP                      = $00716668;
  2023.  
  2024.   XCPT_SIGNAL_INTR                        = 1;
  2025.   XCPT_SIGNAL_KILLPROC                    = 3;
  2026.   XCPT_SIGNAL_BREAK                       = 4;
  2027.  
  2028.   XCPT_FATAL_EXCEPTION                    = $c0000000;
  2029.   XCPT_SEVERITY_CODE                      = $c0000000;
  2030.   XCPT_CUSTOMER_CODE                      = $20000000;
  2031.   XCPT_FACILITY_CODE                      = $1fff0000;
  2032.   XCPT_EXCEPTION_CODE                     = $0000ffff;
  2033.  
  2034.   XCPT_UNKNOWN_ACCESS                     = $00000000;
  2035.   XCPT_READ_ACCESS                        = $00000001;
  2036.   XCPT_WRITE_ACCESS                       = $00000002;
  2037.   XCPT_EXECUTE_ACCESS                     = $00000004;
  2038.   XCPT_SPACE_ACCESS                       = $00000008;
  2039.   XCPT_LIMIT_ACCESS                       = $00000010;
  2040.   XCPT_DATA_UNKNOWN                       = $ffffffff;
  2041.  
  2042.   XCPT_GUARD_PAGE_VIOLATION               = $80000001;
  2043.   XCPT_UNABLE_TO_GROW_STACK               = $80010001;
  2044.   XCPT_ACCESS_VIOLATION                   = $c0000005;
  2045.   XCPT_IN_PAGE_ERROR                      = $c0000006;
  2046.   XCPT_ILLEGAL_INSTRUCTION                = $c000001c;
  2047.   XCPT_INVALID_LOCK_SEQUENCE              = $c000001d;
  2048.   XCPT_NONCONTINUABLE_EXCEPTION           = $c0000024;
  2049.   XCPT_INVALID_DISPOSITION                = $c0000025;
  2050.   XCPT_UNWIND                             = $c0000026;
  2051.   XCPT_BAD_STACK                          = $c0000027;
  2052.   XCPT_INVALID_UNWIND_TARGET              = $c0000028;
  2053.   XCPT_ARRAY_BOUNDS_EXCEEDED              = $c0000093;
  2054.   XCPT_FLOAT_DENORMAL_OPERAND             = $c0000094;
  2055.   XCPT_FLOAT_DIVIDE_BY_ZERO               = $c0000095;
  2056.   XCPT_FLOAT_INEXACT_RESULT               = $c0000096;
  2057.   XCPT_FLOAT_INVALID_OPERATION            = $c0000097;
  2058.   XCPT_FLOAT_OVERFLOW                     = $c0000098;
  2059.   XCPT_FLOAT_STACK_CHECK                  = $c0000099;
  2060.   XCPT_FLOAT_UNDERFLOW                    = $c000009a;
  2061.   XCPT_INTEGER_DIVIDE_BY_ZERO             = $c000009b;
  2062.   XCPT_INTEGER_OVERFLOW                   = $c000009c;
  2063.   XCPT_PRIVILEGED_INSTRUCTION             = $c000009d;
  2064.   XCPT_DATATYPE_MISALIGNMENT              = $c000009e;
  2065.   XCPT_BREAKPOINT                         = $c000009f;
  2066.   XCPT_SINGLE_STEP                        = $c00000a0;
  2067.   XCPT_PROCESS_TERMINATE                  = $c0010001;
  2068.   XCPT_ASYNC_PROCESS_TERMINATE            = $c0010002;
  2069.   XCPT_SIGNAL                             = $c0010003;
  2070.  
  2071. type
  2072.   TFPREG = record
  2073.     losig : Longint;
  2074.     hisig : Longint;
  2075.     signexp : Word;
  2076.   end;
  2077.   PFPREG = ^TFPREG;
  2078.  
  2079.   TCONTEXTRECORD = record
  2080.     ContextFlags : Longint;
  2081.     ctx_env : array[0..7-1] of Longint;
  2082.     ctx_stack : array[0..8-1] of TFPREG;
  2083.     ctx_SegGs : Longint;
  2084.     ctx_SegFs : Longint;
  2085.     ctx_SegEs : Longint;
  2086.     ctx_SegDs : Longint;
  2087.     ctx_RegEdi : Longint;
  2088.     ctx_RegEsi : Longint;
  2089.     ctx_RegEax : Longint;
  2090.     ctx_RegEbx : Longint;
  2091.     ctx_RegEcx : Longint;
  2092.     ctx_RegEdx : Longint;
  2093.     ctx_RegEbp : Longint;
  2094.     ctx_RegEip : Longint;
  2095.     ctx_SegCs : Longint;
  2096.     ctx_EFlags : Longint;
  2097.     ctx_RegEsp : Longint;
  2098.     ctx_SegSs : Longint;
  2099.   end;
  2100.   PCONTEXTRECORD = ^TCONTEXTRECORD;
  2101.  
  2102. const
  2103.   EXCEPTION_MAXIMUM_PARAMETERS            = 4;
  2104. (*
  2105. type
  2106.   ;
  2107. function (
  2108.     ExceptionNum : Longint
  2109.     fHandlerFlags : Longint
  2110.     _EXCEPTIONREPORTRECORD : structNestedExceptionReportRecord : *
  2111.     ExceptionAddress : Pointer
  2112.     cParameters : Longint
  2113.     ExceptionInfo : array[0..EXCEPTION_MAXIMUM_PARAMETERS-1] of Longint
  2114.     EXCEPTIONREPORTRECORD : }
  2115.     EXCEPTIONREPORTRECORD : typedef*PEXCEPTIONREPORTRECORD
  2116.     
  2117.     _EXCEPTIONREGISTRATIONRECORD : struct
  2118.  
  2119.     Longint : typedef(*ERR) : {;
  2120. function _EXCEPTIONREGISTRATIONRECORD *pRegistration,(
  2121.     pContext : PCONTEXTRECORD; pWhatever : Pointer) : struct;
  2122.  
  2123. type
  2124.   ;
  2125. function (
  2126.     _EXCEPTIONREGISTRATIONRECORD : struct__volatile__ : *prev_structure
  2127.     __volatile__ : ERRExceptionHandler
  2128.     EXCEPTIONREGISTRATIONRECORD : }
  2129.     EXCEPTIONREGISTRATIONRECORD : typedef*PEXCEPTIONREGISTRATIONRECORD
  2130.  
  2131.     END_OF_CHAIN : #define((PEXCEPTIONREGISTRATIONRECORD) : {;
  2132. *)
  2133.  
  2134. (* --------------------------- INFORMATION -------------------------------- *)
  2135.  
  2136. const
  2137.   QSV_MAX_PATH_LENGTH                     = 1;
  2138.   QSV_MAX_TEXT_SESSIONS                   = 2;
  2139.   QSV_MAX_PM_SESSIONS                     = 3;
  2140.   QSV_MAX_VDM_SESSIONS                    = 4;
  2141.   QSV_BOOT_DRIVE                          = 5;
  2142.   QSV_DYN_PRI_VARIATION                   = 6;
  2143.   QSV_MAX_WAIT                            = 7;
  2144.   QSV_MIN_SLICE                           = 8;
  2145.   QSV_MAX_SLICE                           = 9;
  2146.   QSV_PAGE_SIZE                           = 10;
  2147.   QSV_VERSION_MAJOR                       = 11;
  2148.   QSV_VERSION_MINOR                       = 12;
  2149.   QSV_VERSION_REVISION                    = 13;
  2150.   QSV_MS_COUNT                            = 14;
  2151.   QSV_TIME_LOW                            = 15;
  2152.   QSV_TIME_HIGH                           = 16;
  2153.   QSV_TOTPHYSMEM                          = 17;
  2154.   QSV_TOTRESMEM                           = 18;
  2155.   QSV_TOTAVAILMEM                         = 19;
  2156.   QSV_MAXPRMEM                            = 20;
  2157.   QSV_MAXSHMEM                            = 21;
  2158.   QSV_TIMER_INTERVAL                      = 22;
  2159.   QSV_MAX_COMP_LENGTH                     = 23;
  2160.   QSV_MAX                                 = QSV_MAX_COMP_LENGTH;
  2161.  
  2162. (* ---------------------------- TIMERS ------------------------------------ *)
  2163.  
  2164. type
  2165.   HTIMER = LHANDLE;
  2166.   PHTIMER = ^HTIMER;
  2167.  
  2168.   TDATETIME = record
  2169.     hours : Byte;
  2170.     minutes : Byte;
  2171.     seconds : Byte;
  2172.     hundredths : Byte;
  2173.     day : Byte;
  2174.     month : Byte;
  2175.     year : Word;
  2176.     timezone : Shortint;
  2177.     weekday : Byte;
  2178.   end;
  2179.   PDATETIME = ^TDATETIME;
  2180.  
  2181.   TQWORD = record
  2182.     ulLo : Longint;
  2183.     ulHi : Longint;
  2184.   end;
  2185.   PQWORD = ^TQWORD;
  2186.  
  2187. (* ---------------------- VIRTUAL DOS MACHINES----------------------------- *)
  2188.  
  2189. type
  2190.   HVDD = LHANDLE;
  2191.   PHVDD = ^HVDD;
  2192.  
  2193.   SGID = Word;
  2194.  
  2195. (* --------------------------- DEBUGGING ---------------------------------- *)
  2196.  
  2197. const
  2198.   DBG_C_Null                              = 0;
  2199.   DBG_C_ReadMem                           = 1;
  2200.   DBG_C_ReadMem_I                         = 1;
  2201.   DBG_C_ReadMem_D                         = 2;
  2202.   DBG_C_ReadReg                           = 3;
  2203.   DBG_C_WriteMem                          = 4;
  2204.   DBG_C_WriteMem_I                        = 4;
  2205.   DBG_C_WriteMem_D                        = 5;
  2206.   DBG_C_WriteReg                          = 6;
  2207.   DBG_C_Go                                = 7;
  2208.   DBG_C_Term                              = 8;
  2209.   DBG_C_SStep                             = 9;
  2210.   DBG_C_Stop                              = 10;
  2211.   DBG_C_Freeze                            = 11;
  2212.   DBG_C_Resume                            = 12;
  2213.   DBG_C_NumToAddr                         = 13;
  2214.   DBG_C_ReadCoRegs                        = 14;
  2215.   DBG_C_WriteCoRegs                       = 15;
  2216.   DBG_C_ThrdStat                          = 17;
  2217.   DBG_C_MapROAlias                        = 18;
  2218.   DBG_C_MapRWAlias                        = 19;
  2219.   DBG_C_UnMapAlias                        = 20;
  2220.   DBG_C_Connect                           = 21;
  2221.   DBG_C_ReadMemBuf                        = 22;
  2222.   DBG_C_WriteMemBuf                       = 23;
  2223.   DBG_C_SetWatch                          = 24;
  2224.   DBG_C_ClearWatch                        = 25;
  2225.   DBG_C_RangeStep                         = 26;
  2226.   DBG_C_Continue                          = 27;
  2227.   DBG_C_AddrToObject                      = 28;
  2228.   DBG_C_XchngOpcode                       = 29;
  2229.   DBG_C_LinToSel                          = 30;
  2230.   DBG_C_SelToLin                          = 31;
  2231.  
  2232.   DBG_N_SUCCESS                           = 0;
  2233.   DBG_N_ERROR                             = (-1);
  2234.   DBG_N_ProcTerm                          = (-6);
  2235.   DBG_N_Exception                         = (-7);
  2236.   DBG_N_ModuleLoad                        = (-8);
  2237.   DBG_N_CoError                           = (-9);
  2238.   DBG_N_ThreadTerm                        = (-10);
  2239.   DBG_N_AsyncStop                         = (-11);
  2240.   DBG_N_NewProc                           = (-12);
  2241.   DBG_N_AliasFree                         = (-13);
  2242.   DBG_N_Watchpoint                        = (-14);
  2243.   DBG_N_ThreadCreate                      = (-15);
  2244.   DBG_N_ModuleFree                        = (-16);
  2245.   DBG_N_RangeStep                         = (-17);
  2246.  
  2247.   DBG_D_Thawed                            = 0;
  2248.   DBG_D_Frozen                            = 1;
  2249.  
  2250.   DBG_T_Runnable                          = 0;
  2251.   DBG_T_Suspended                         = 1;
  2252.   DBG_T_Blocked                           = 2;
  2253.   DBG_T_CritSec                           = 3;
  2254.  
  2255.   DBG_L_386                               = 1;
  2256.  
  2257.   DBG_CO_387                              = 1;
  2258.  
  2259.   DBG_O_OBJMTE                            = $10000000;
  2260.  
  2261.   DBG_W_Global                            = $00000001;
  2262.   DBG_W_Local                             = $00000002;
  2263.   DBG_W_Execute                           = $00010000;
  2264.   DBG_W_Write                             = $00020000;
  2265.   DBG_W_ReadWrite                         = $00040000;
  2266.  
  2267. type
  2268.   TDEBUGBUFFER = record
  2269.     ulPid : Longint;
  2270.     ulTid : Longint;
  2271.     lCmd : Longint;
  2272.     lValue : Longint;
  2273.     ulAddr : Longint;
  2274.     ulBuffer : Longint;
  2275.     ulLen : Longint;
  2276.     ulIndex : Longint;
  2277.     ulMTE : Longint;
  2278.     ulEAX : Longint;
  2279.     ulECX : Longint;
  2280.     ulEDX : Longint;
  2281.     ulEBX : Longint;
  2282.     ulESP : Longint;
  2283.     ulEBP : Longint;
  2284.     ulESI : Longint;
  2285.     ulEDI : Longint;
  2286.     ulEFlags : Longint;
  2287.     ulEIP : Longint;
  2288.     ulCSLim : Longint;
  2289.     ulCSBase : Longint;
  2290.     ucCSAcc : Char;
  2291.     ucCSAtr : Char;
  2292.     usCS : Word;
  2293.     ulDSLim : Longint;
  2294.     ulDSBase : Longint;
  2295.     ucDSAcc : Char;
  2296.     ucDSAtr : Char;
  2297.     usDS : Word;
  2298.     ulESLim : Longint;
  2299.     ulESBase : Longint;
  2300.     ucESAcc : Char;
  2301.     ucESAtr : Char;
  2302.     _usES : Word;
  2303.     ulFSLim : Longint;
  2304.     ulFSBase : Longint;
  2305.     ucFSAcc : Char;
  2306.     ucFSAtr : Char;
  2307.     usFS : Word;
  2308.     ulGSLim : Longint;
  2309.     ulGSBase : Longint;
  2310.     ucGSAcc : Char;
  2311.     ucGSAtr : Char;
  2312.     usGS : Word;
  2313.     ulSSLim : Longint;
  2314.     ulSSBase : Longint;
  2315.     ucSSAcc : Char;
  2316.     ucSSAtr : Char;
  2317.     usSS : Word;
  2318.   end;
  2319.   PDEBUGBUFFER = ^TDEBUGBUFFER;
  2320.  
  2321.  
  2322. (* ---------------------------- REXX -------------------------------------- *)
  2323.  
  2324. const
  2325.   RXAUTOBUFLEN                            = 256;
  2326.  
  2327. type
  2328.   TRXSTRING = record
  2329.     strlength : Longint;
  2330.     strptr : PCH;
  2331.   end;
  2332.   PRXSTRING = ^TRXSTRING;
  2333.  
  2334.   TRXSYSEXIT = record
  2335.     sysexit_name : PChar;
  2336.     sysexit_code : Longint;
  2337.   end;
  2338.   PRXSYSEXIT = ^TRXSYSEXIT;
  2339. {
  2340. const
  2341.   RXNULLSTRING                            = (r)         ((r).strptr == (PCH)0);
  2342.   RXZEROLENSTRING                         = (r)      ((r).strptr  not = (PCH)0  and  (r).strlength == 0);
  2343.   RXVALIDSTRING                           = (r)        ((r).strptr  not = (PCH)0  and  (r).strlength  not = 0);
  2344.   RXSTRLEN                                = (r)             (RXNULLSTRING(r) ? 0 : (r).strlength);
  2345.   RXSTRPTR                                = (r)             (r).strptr;
  2346.   MAKERXSTRING                            = (r,p,l) 
  2347.     ((r).strptr = (PCH)p, (r).strlength = (Longint)l);
  2348.  
  2349. }
  2350.  
  2351. implementation
  2352.  
  2353. end.