home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sp15demo.zip / libsrc.zip / LIBSRC / BSEDOS.PAS < prev    next >
Pascal/Delphi Source File  |  1996-02-22  |  74KB  |  1,700 lines

  1. UNIT BseDos;
  2.  
  3. {****************************** Module Header *****************************
  4. *                                                                         *
  5. * Module Name: BSEDOS.PAS                                                 *
  6. *                                                                         *
  7. * OS/2 Base include file.                                                 *
  8. *                                                                         *
  9. ***************************************************************************}
  10.  
  11. INTERFACE
  12.  
  13. USES Os2Def,BseTib,BseExcpt;
  14.  
  15. { Access protection }
  16. CONST
  17.      PAG_READ          =$00000001;      { read access                      }
  18.      PAG_WRITE         =$00000002;      { write access                     }
  19.      PAG_EXECUTE       =$00000004;      { execute access                   }
  20.      PAG_GUARD         =$00000008;      { guard protection                 }
  21.      PAG_DEFAULT       =$00000400;      { default (initial) access         }
  22.  
  23. { Commit}
  24.      PAG_COMMIT        =$00000010;      { commit storage                   }
  25.      PAG_DECOMMIT      =$00000020;      { decommit storage                 }
  26.  
  27. { Allocation attributes }
  28.      OBJ_TILE          =$00000040;      { tile object                      }
  29.      OBJ_PROTECTED     =$00000080;      { protect object
  30.                                           NOTE: This flag is NOT available at
  31.                                           the api level }
  32.      OBJ_GETTABLE      =$00000100;      { gettable by other processes      }
  33.      OBJ_GIVEABLE      =$00000200;      { giveable to other processes      }
  34.  
  35.  
  36.      fPERM             =PAG_EXECUTE OR PAG_READ OR PAG_WRITE;
  37.      fSHARE            =OBJ_GETTABLE OR OBJ_GIVEABLE;
  38.  
  39. { DosAllocMem flags }
  40.      fALLOC            =OBJ_TILE OR PAG_COMMIT OR fPERM;
  41.  
  42.  
  43. { DosAllocSharedMem flags }
  44.      fALLOCSHR         =OBJ_TILE OR PAG_COMMIT OR fSHARE OR fPERM;
  45.  
  46. { DosGetNamedSharedMem flags }
  47.      fGETNMSHR         =fPERM;
  48.  
  49. { DosGetSharedMem flags }
  50.      fGETSHR           =fPERM;
  51.  
  52. { DosGiveSharedMem flags }
  53.      fGIVESHR          =fPERM;
  54.  
  55. { DosSetMem flags }
  56.      fSET              =PAG_COMMIT + PAG_DECOMMIT + PAG_DEFAULT + fPERM;
  57.  
  58. { Dos32SubSet flags }
  59.      DOSSUB_INIT       =$01;      { initialize memory object for
  60.                                     suballocation                    }
  61.      DOSSUB_GROW       =$02;      { increase size of memory pool
  62.                                     for suballocation                }
  63.      DOSSUB_SPARSE_OBJ =$04;      { indicator for DosSub to
  64.                                     manage the commitment of
  65.                                     pages spanned by the memory pool }
  66.      DOSSUB_SERIALIZE  =$08;      { indicates that access to the
  67.                                     memory pool is to be
  68.                                     serialized by DosSub             }
  69.  
  70.  
  71. { Allocation type (returned from DosQueryMem) }
  72.      PAG_SHARED        =$00002000; { shared object                    }
  73.      PAG_FREE          =$00004000; { pages are free                   }
  74.      PAG_BASE          =$00010000; { first page in object             }
  75.  
  76.  
  77. { DosExit codes }
  78. CONST
  79.       EXIT_THREAD        =0;
  80.       EXIT_PROCESS       =1;
  81.  
  82. TYPE
  83.     PFNTHREAD=POINTER;
  84.  
  85. { Action code values }
  86. CONST
  87.       DCWA_PROCESS       =0;
  88.       DCWA_PROCESSTREE   =1;
  89.  
  90.    { Wait option values }
  91.  
  92.       DCWW_WAIT          =0;
  93.       DCWW_NOWAIT        =1;
  94.  
  95. { Thread Flags for DosCreateThread options 59468 }
  96.  
  97.    CREATE_READY          =0;                   { defect 65437  }
  98.    CREATE_SUSPENDED      =1;
  99.    STACK_SPARSE          =0;
  100.    STACK_COMMITTED       =2;
  101.  
  102. TYPE
  103.     PRESULTCODES=^RESULTCODES;
  104.     RESULTCODES=RECORD
  105.                      codeTerminate:ULONG;
  106.                      codeResult:ULONG;
  107.                 END;
  108.  
  109.  
  110. { User's Debug Buffer structure }
  111.  
  112. TYPE
  113.     PDbgBuf=^TDbgBuf;
  114.     TDbgBuf=RECORD
  115.                  Pid:PID;                 { Debuggee Process id          }
  116.                  Tid:TID;                 { Debuggee Thread id           }
  117.                  Cmd:LONGINT;             { Command or Notification      }
  118.                  Value:LONGINT;           { Generic Data Value           }
  119.                  Addr:LONGWORD;           { Debuggee Address             }
  120.                  Buffer:LONGWORD;         { Debugger Buffer Address      }
  121.                  Len:LONGWORD;            { Length of Range              }
  122.                  index:LONGWORD;          { Generic Identifier Index     }
  123.                  MTE:LONGWORD;            { Module Table Entry Handle    }
  124.                  EAX:LONGWORD;            { Register Set                 }
  125.                  ECX:LONGWORD;
  126.                  EDX:LONGWORD;
  127.                  EBX:LONGWORD;
  128.                  ESP:LONGWORD;
  129.                  EBP:LONGWORD;
  130.                  ESI:LONGWORD;
  131.                  EDI:LONGWORD;
  132.                  EFlags:LONGWORD;
  133.                  EIP:LONGWORD;
  134.                  CSLim:LONGWORD;
  135.                  CSBase:LONGWORD;
  136.                  CSAcc:BYTE;
  137.                  CSAtr:BYTE;
  138.                  CS:WORD;
  139.                  DSLim:LONGWORD;
  140.                  DSBase:LONGWORD;
  141.                  DSAcc:BYTE;
  142.                  DSAtr:BYTE;
  143.                  DS:WORD;
  144.                  ESLim:LONGWORD;
  145.                  ESBase:LONGWORD;
  146.                  ESAcc:BYTE;
  147.                  ESAtr:BYTE;
  148.                  ES:WORD;
  149.                  FSLim:LONGWORD;
  150.                  FSBase:LONGWORD;
  151.                  FSAcc:BYTE;
  152.                  FSAtr:BYTE;
  153.                  FS:WORD;
  154.                  GSLim:LONGWORD;
  155.                  GSBase:LONGWORD;
  156.                  GSAcc:BYTE;
  157.                  GSAtr:BYTE;
  158.                  GS:WORD;
  159.                  SSLim:LONGWORD;
  160.                  SSBase:LONGWORD;
  161.                  SSAcc:BYTE;
  162.                  SSAtr:BYTE;
  163.                  SS:WORD;
  164.          END;
  165.  
  166. { DosDebug Command Numbers
  167.  *
  168.  *      These numbers are placed in the Cmd field of the uDB on
  169.  *      entry to DosDebug.
  170.  *
  171.  *      These numbers identify which command DosDebug is requested
  172.  *      to perform.
  173.  *
  174.  }
  175.  
  176. CONST
  177.    DBG_C_Null              =0;       { Null                         }
  178.    DBG_C_ReadMem           =1;       { Read Word                    }
  179.    DBG_C_ReadMem_I         =1;       { Read Word                    }
  180.    DBG_C_ReadMem_D         =2;       { Read Word (same as 1)        }
  181.    DBG_C_ReadReg           =3;       { Read Register Set            }
  182.    DBG_C_WriteMem          =4;       { Write Word                   }
  183.    DBG_C_WriteMem_I        =4;       { Write Word                   }
  184.    DBG_C_WriteMem_D        =5;       { Write Word (same as 4)       }
  185.    DBG_C_WriteReg          =6;       { Write Register Set           }
  186.    DBG_C_Go                =7;       { Go                           }
  187.    DBG_C_Term              =8;       { Terminate                    }
  188.    DBG_C_SStep             =9;       { Single Step                  }
  189.    DBG_C_Stop              =10;      { Stop                         }
  190.    DBG_C_Freeze            =11;      { Freeze Thread                }
  191.    DBG_C_Resume            =12;      { Resume Thread                }
  192.    DBG_C_NumToAddr         =13;      { Object Number to Address     }
  193.    DBG_C_ReadCoRegs        =14;      { Read Coprocessor Registers   }
  194.    DBG_C_WriteCoRegs       =15;      { Write Coprocessor Registers  }
  195.                                         { 16 is reserved               }
  196.    DBG_C_ThrdStat          =17;      { Get Thread Status            }
  197.    DBG_C_MapROAlias        =18;      { Map read-only alias          }
  198.    DBG_C_MapRWAlias        =19;      { Map read-write alias         }
  199.    DBG_C_UnMapAlias        =20;      { Unmap Alias                  }
  200.    DBG_C_Connect           =21;      { Connect to Debuggee          }
  201.    DBG_C_ReadMemBuf        =22;      { Read Memory Buffer           }
  202.    DBG_C_WriteMemBuf       =23;      { Write Memory Buffer          }
  203.    DBG_C_SetWatch          =24;      { Set Watchpoint               }
  204.    DBG_C_ClearWatch        =25;      { Clear Watchpoint             }
  205.    DBG_C_RangeStep         =26;      { Range Step                   }
  206.    DBG_C_Continue          =27;      { Continue after an Exception  }
  207.    DBG_C_AddrToObject      =28;      { Address to Object            }
  208.    DBG_C_XchgOpcode        =29;      { Exchange opcode and go       }
  209.    DBG_C_LinToSel          =30;      { 32 to 16 conversion      A001}
  210.    DBG_C_SelToLin          =31;      { 16 to 32 conversion      A001}
  211.  
  212.    {------ Constants -------------------}
  213.    DBG_L_386               =1;
  214.    DBG_O_OBJMTE            =$10000000;
  215.  
  216.    {------ Notifications ---------------}
  217.    DBG_N_SUCCESS             = 0;
  218.    DBG_N_ERROR               =-1;
  219.    DBG_N_ProcTerm            =-6;
  220.    DBG_N_Exception           =-7;
  221.    DBG_N_ModuleLoad          =-8;
  222.    DBG_N_CoError             =-9;
  223.    DBG_N_ThreadTerm          =-10;
  224.    DBG_N_AsyncStop           =-11;
  225.    DBG_N_NewProc             =-12;
  226.    DBG_N_AliasFree           =-13;
  227.    DBG_N_Watchpoint          =-14;
  228.    DBG_N_ThreadCreate        =-15;
  229.    DBG_N_ModuleFree          =-16;
  230.    DBG_N_RangeStep           =-17;
  231.  
  232.    DBG_X_PRE_FIRST_CHANCE    = 0;
  233.    DBG_X_FIRST_CHANCE        = 1;
  234.    DBG_X_LAST_CHANCE         = 2;
  235.    DBG_X_STACK_INVALID       = 3;
  236.  
  237.    DBG_W_Local               =$0000001;
  238.    DBG_W_Global              =$0000002;
  239.    DBG_W_Execute             =$00010000;
  240.    DBG_W_Write               =$00020000;
  241.    DBG_W_ReadWrite           =$00030000;
  242.  
  243. { codeTerminate values (also passed to ExitList routines) }
  244.  
  245. CONST
  246.       TC_EXIT            =0;
  247.       TC_HARDERROR       =1;
  248.       TC_TRAP            =2;
  249.       TC_KILLPROCESS     =3;
  250.       TC_EXCEPTION       =4;
  251.  
  252. TYPE
  253.     PFNEXITLIST=POINTER;
  254.  
  255.  
  256. { DosExitList functions }
  257.  
  258. CONST
  259.     EXLST_ADD          =1;
  260.     EXLST_REMOVE       =2;
  261.     EXLST_EXIT         =3;
  262.  
  263.  
  264. { DosExecPgm functions }
  265. CONST
  266.       EXEC_SYNC          =0;
  267.       EXEC_ASYNC         =1;
  268.       EXEC_ASYNCRESULT   =2;
  269.       EXEC_TRACE         =3;
  270.       EXEC_BACKGROUND    =4;
  271.       EXEC_LOAD          =5;
  272.       EXEC_ASYNCRESULTDB =6;
  273.  
  274.  
  275.  
  276. { Priority scopes }
  277. CONST
  278.       PRTYS_PROCESS      =0;
  279.       PRTYS_PROCESSTREE  =1;
  280.       PRTYS_THREAD       =2;
  281.  
  282. { Priority classes }
  283. CONST
  284.       PRTYC_NOCHANGE         =0;
  285.       PRTYC_IDLETIME         =1;
  286.       PRTYC_REGULAR          =2;
  287.       PRTYC_TIMECRITICAL     =3;
  288.       PRTYC_FOREGROUNDSERVER =4;
  289.  
  290.    { Priority deltas }
  291.  
  292.       PRTYD_MINIMUM     =-31;
  293.       PRTYD_MAXIMUM     = 31;
  294.  
  295.  
  296.  
  297. CONST
  298.       DKP_PROCESSTREE    =0;
  299.       DKP_PROCESS        =1;
  300.  
  301.    {************************************************************************
  302.    * CCHMAXPATH is the maximum fully qualified path name length including  *
  303.    * the drive letter, colon, backslashes and terminating NULL.            *
  304.    *************************************************************************}
  305.       CCHMAXPATH         =260;
  306.  
  307.    {************************************************************************
  308.    * CCHMAXPATHCOMP is the maximum individual path component name length   *
  309.    * including a terminating NULL.                                         *
  310.    *************************************************************************}
  311.       CCHMAXPATHCOMP     =256;
  312.  
  313. { DosSetFilePtr() file position codes }
  314. CONST
  315.       FILE_BEGIN      =$0000;   { Move relative to beginning of file }
  316.       FILE_CURRENT    =$0001;   { Move relative to current fptr position }
  317.       FILE_END        =$0002;   { Move relative to end of file }
  318.  
  319.    { DosFindFirst/Next Directory handle types }
  320.       HDIR_SYSTEM      =  1;    { Use system handle (1) }
  321.       HDIR_CREATE      = -1;    { Allocate a new, unused handle }
  322.  
  323.    { DosCopy control bits; may be or'ed together }
  324.       DCPY_EXISTING   =$0001;   { Copy even if target exists }
  325.       DCPY_APPEND     =$0002;   { Append to existing file, do not replace }
  326.       DCPY_FAILEAS    =$0004;   { Fail if EAs not supported on target}
  327.  
  328.    { DosOpen/DosQFHandState/DosQueryFileInfo et al file attributes; also }
  329.    { known as Dos File Mode bits... }
  330.       FILE_NORMAL     =$0000;
  331.       FILE_READONLY   =$0001;
  332.       FILE_HIDDEN     =$0002;
  333.       FILE_SYSTEM     =$0004;
  334.       FILE_DIRECTORY  =$0010;
  335.       FILE_ARCHIVED   =$0020;
  336.  
  337.       FILE_IGNORE     =$10000;     { ignore file attribute in }
  338.    { DosSetPath/File Info if }
  339.    { this bit is set}
  340.  
  341.       MUST_HAVE_READONLY     =(FILE_READONLY  SHL 8) OR FILE_READONLY;
  342.       MUST_HAVE_HIDDEN       =(FILE_HIDDEN SHL 8) OR FILE_HIDDEN;
  343.       MUST_HAVE_SYSTEM       =(FILE_SYSTEM SHL 8) OR FILE_SYSTEM;
  344.       MUST_HAVE_DIRECTORY    =(FILE_DIRECTORY SHL 8) OR FILE_DIRECTORY;
  345.       MUST_HAVE_ARCHIVED     =(FILE_ARCHIVED SHL 8) OR FILE_ARCHIVED;
  346.  
  347.    { DosOpen() actions }
  348.       FILE_EXISTED    =$0001;
  349.       FILE_CREATED    =$0002;
  350.       FILE_TRUNCATED  =$0003;
  351.  
  352.    { DosOpen() open flags }
  353.       FILE_OPEN       =$0001;
  354.       FILE_TRUNCATE   =$0002;
  355.       FILE_CREATE     =$0010;
  356.  
  357.    {     this nibble applies if file already exists                xxxx }
  358.       OPEN_ACTION_FAIL_IF_EXISTS     =$0000;  { ---- ---- ---- 0000 }
  359.       OPEN_ACTION_OPEN_IF_EXISTS     =$0001;  { ---- ---- ---- 0001 }
  360.       OPEN_ACTION_REPLACE_IF_EXISTS  =$0002;  { ---- ---- ---- 0010 }
  361.  
  362.    {     this nibble applies if file does not exist           xxxx      }
  363.       OPEN_ACTION_FAIL_IF_NEW        =$0000;  { ---- ---- 0000 ---- }
  364.       OPEN_ACTION_CREATE_IF_NEW      =$0010;  { ---- ---- 0001 ---- }
  365.  
  366.    { DosOpen/DosSetFHandState flags }
  367.       OPEN_ACCESS_READONLY           =$0000;  { ---- ---- ---- -000 }
  368.       OPEN_ACCESS_WRITEONLY          =$0001;  { ---- ---- ---- -001 }
  369.       OPEN_ACCESS_READWRITE          =$0002;  { ---- ---- ---- -010 }
  370.       OPEN_SHARE_DENYREADWRITE       =$0010;  { ---- ---- -001 ---- }
  371.       OPEN_SHARE_DENYWRITE           =$0020;  { ---- ---- -010 ---- }
  372.       OPEN_SHARE_DENYREAD            =$0030;  { ---- ---- -011 ---- }
  373.       OPEN_SHARE_DENYNONE            =$0040;  { ---- ---- -100 ---- }
  374.       OPEN_FLAGS_NOINHERIT           =$0080;  { ---- ---- 1--- ---- }
  375.       OPEN_FLAGS_NO_LOCALITY         =$0000;  { ---- -000 ---- ---- }
  376.       OPEN_FLAGS_SEQUENTIAL          =$0100;  { ---- -001 ---- ---- }
  377.       OPEN_FLAGS_RANDOM              =$0200;  { ---- -010 ---- ---- }
  378.       OPEN_FLAGS_RANDOMSEQUENTIAL    =$0300;  { ---- -011 ---- ---- }
  379.       OPEN_FLAGS_NO_CACHE            =$1000;  { ---1 ---- ---- ---- }
  380.       OPEN_FLAGS_FAIL_ON_ERROR       =$2000;  { --1- ---- ---- ---- }
  381.       OPEN_FLAGS_WRITE_THROUGH       =$4000;  { -1-- ---- ---- ---- }
  382.       OPEN_FLAGS_DASD                =$8000;  { 1--- ---- ---- ---- }
  383.       OPEN_FLAGS_NONSPOOLED          =$00040000;
  384.       OPEN_FLAGS_PROTECTED_HANDLE =$40000000;
  385.  
  386.  
  387.    { DosSearchPath() constants }
  388.       SEARCH_PATH           =$0000;
  389.       SEARCH_CUR_DIRECTORY  =$0001;
  390.       SEARCH_ENVIRONMENT    =$0002;
  391.       SEARCH_IGNORENETERRS  =$0004;
  392.  
  393.  
  394.    {***********************************************************
  395.    EA Info Levels & Find First/Next
  396.    =========================================
  397.    API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
  398.    DosSetPathInfo
  399.    ***********************************************************}
  400.  
  401.    { File info levels&gml All listed API's }
  402.       FIL_STANDARD          =1;     { Info level 1, standard file info }
  403.       FIL_QUERYEASIZE       =2;     { Level 2, return Full EA size }
  404.       FIL_QUERYEASFROMLIST  =3;     { Level 3, return requested EA's }
  405.  
  406.    { File info levels: Dos...PathInfo only }
  407.       FIL_QUERYFULLNAME     =5;     { Level 5, return fully qualified
  408.    name of file }
  409.  
  410.  
  411.    { DosFsAttach() }
  412.    { Attact or detach }
  413.       FS_ATTACH             =0;     { Attach file server }
  414.       FS_DETACH             =1;     { Detach file server }
  415.       FS_SPOOLATTACH        =2;     { Register a spooler device }
  416.       FS_SPOOLDETACH        =3;     { De-register a spooler device }
  417.  
  418.  
  419.    { DosFsCtl() }
  420.    { Routing type }
  421.       FSCTL_HANDLE          =1;     { File Handle directs req routing }
  422.       FSCTL_PATHNAME        =2;     { Path Name directs req routing }
  423.       FSCTL_FSDNAME         =3;     { FSD Name directs req routing }
  424.  
  425.    { defined FSCTL functions }
  426.       FSCTL_ERROR_INFO      =1;     { return error info from FSD }
  427.       FSCTL_MAX_EASIZE      =2;     { Max ea size for the FSD }
  428.  
  429. TYPE
  430.    PEASIZEBUF=^EASIZEBUF;
  431.    EASIZEBUF=RECORD       { struct for FSCTL fn 2 - max ea size }
  432.                 cbMaxEASize:WORD;        { max. size of one EA }
  433.                 cbMaxEAListSize:ULONG;   { max size of the full EA List }
  434.              END;
  435.  
  436.    { DosQueryFSAttach() }
  437.    { Information level types (defines method of query) }
  438. CONST
  439.       FSAIL_QUERYNAME       =1;     { Return data for a Drive or Device }
  440.       FSAIL_DEVNUMBER       =2;     { Return data for Ordinal Device # }
  441.       FSAIL_DRVNUMBER       =3;     { Return data for Ordinal Drive # }
  442.  
  443.    { Item types (from data structure item "iType") }
  444.       FSAT_CHARDEV          =1;     { Resident character device }
  445.       FSAT_PSEUDODEV        =2;     { Pusedu-character device }
  446.       FSAT_LOCALDRV         =3;     { Local drive }
  447.       FSAT_REMOTEDRV        =4;     { Remote drive attached to FSD }
  448.  
  449. TYPE
  450.    PFSQBUFFER=^FSQBUFFER;
  451.    FSQBUFFER=RECORD       { fsqbuf Data structure for QFSAttach}
  452.                 iType:WORD;       { Item type }
  453.                 cbName:WORD;      { Length of item name, sans NULL }
  454.                 szName:BYTE;      { ASCIIZ item name }
  455.                 cbFSDName:WORD;   { Length of FSD name, sans NULL }
  456.                 szFSDName:BYTE;   { ASCIIZ FSD name }
  457.                 cbFSAData:USHORT; { Length of FSD Attach data returned }
  458.                 rgFSAData:BYTE;  { FSD Attach data from FSD }
  459.              END;
  460.  
  461.    PFSQBUFFER2=^FSQBUFFER2;
  462.    FSQBUFFER2=RECORD       { fsqbuf Data structure for QFSAttach}
  463.                 iType:USHORT;
  464.                 cbName:USHORT;
  465.                 cbFSDName:USHORT;
  466.                 cbFSAData:USHORT;
  467.                 szName:BYTE;
  468.                 szFSDName:BYTE;
  469.                 rgFSAData:BYTE;
  470.              END;
  471.  
  472.    PSPOOLATTACH=^SPOOLATTACH;
  473.    SPOOLATTACH=RECORD
  474.                    hNmPipe:USHORT;            { Named pipe handle }
  475.                    ulKey:ULONG;               { Attached key }
  476.                END;
  477.  
  478.  
  479. {****************************************************************************
  480.  * File System Drive Information&gml DosQueryFSInfo DosSetFSInfo            *
  481.  ****************************************************************************}
  482.  
  483.    { FS Drive Info Levels }
  484. CONST
  485.       FSIL_ALLOC            =1;     { Drive allocation info (Query only) }
  486.       FSIL_VOLSER           =2;     { Drive Volum/Serial info }
  487.  
  488.    { DosQueryFHType() }
  489.    { Handle classes (low 8 bits of Handle Type) }
  490.       FHT_DISKFILE          =$0000;   { Disk file handle }
  491.       FHT_CHRDEV            =$0001;   { Character device handle }
  492.       FHT_PIPE              =$0002;   { Pipe handle }
  493.  
  494.    { Handle bits (high 8 bits of Handle Type) }
  495.       FHB_DSKREMOTE         =$8000;   { Remote disk }
  496.       FHB_CHRDEVREMOTE      =$8000;   { Remote character device }
  497.       FHB_PIPEREMOTE        =$8000;   { Remote pipe }
  498.  
  499.  
  500. TYPE
  501.     PFTIME=^FTIME;
  502.     FTIME=WORD;  {twosecs Bit 0..4, minutes bit 5..10, hours bit 11..15}
  503.  
  504.     PFDATE=^FDATE;
  505.     FDATE=WORD;  {Day Bit 0..4, Month Bit 5..8, year bit 9..15}
  506.  
  507.     PVOLUMELABEL=^VOLUMELABEL;
  508.     VOLUMELABEL=RECORD
  509.                       cch:BYTE;
  510.                       szVolLabel:CSTRING[11];
  511.                 END;
  512.  
  513.     PFSINFO=^FSINFO;
  514.     FSINFO=RECORD
  515.                fdateCreation:FDATE;
  516.                ftimeCreation:FTIME;
  517.                vol:VOLUMELABEL;
  518.            END;
  519.  
  520.    { HANDTYPE values }
  521. CONST
  522.       HANDTYPE_FILE         =$0000;
  523.       HANDTYPE_DEVICE       =$0001;
  524.       HANDTYPE_PIPE         =$0002;
  525.       HANDTYPE_PROTECTED    =$4000;
  526.       HANDTYPE_NETWORK      =$8000;
  527.  
  528. TYPE
  529.       PFILELOCK=^FILELOCK;
  530.       FILELOCK=RECORD
  531.                     lOffset:LONG;
  532.                     lRange:LONG;
  533.                END;
  534.  
  535.       HFILE=LHANDLE;
  536.       HEV=ULONG;
  537.       FHLOCK=ULONG;
  538.  
  539.  
  540. TYPE
  541.       PFILEFINDBUF=^FILEFINDBUF;
  542.       FILEFINDBUF=RECORD
  543.                      fdateCreation:FDATE;
  544.                      ftimeCreation:FTIME;
  545.                      fdateLastAccess:FDATE;
  546.                      ftimeLastAccess:FTIME;
  547.                      fdateLastWrite:FDATE;
  548.                      ftimeLastWrite:FTIME;
  549.                      cbFile:ULONG;
  550.                      cbFileAlloc:ULONG;
  551.                      attrFile:USHORT;
  552.                      cchName:BYTE;
  553.                      achName:CSTRING[CCHMAXPATHCOMP-1];
  554.                 END;
  555.  
  556.       PFILEFINDBUF2=^FILEFINDBUF2;
  557.       FILEFINDBUF2=RECORD    {pack 2}
  558.                         fdateCreation:FDATE;
  559.                         ftimeCreation:FTIME;
  560.                         fdateLastAccess:FDATE;
  561.                         ftimeLastAccess:FTIME;
  562.                         fdateLastWrite:FDATE;
  563.                         ftimeLastWrite:FTIME;
  564.                         cbFile:ULONG;
  565.                         cbFileAlloc:ULONG;
  566.                         attrFile:USHORT;
  567.                         cbList:ULONG;
  568.                         cchName:BYTE;
  569.                         achName:CSTRING[CCHMAXPATHCOMP-1];
  570.                    END;
  571.  
  572.       PFILEFINDBUF3=^FILEFINDBUF3;
  573.       FILEFINDBUF3=RECORD  { pack 2 }
  574.                         oNextEntryOffset:ULONG;            { new field }
  575.                         fdateCreation:FDATE;
  576.                         ftimeCreation:FTIME;
  577.                         fdateLastAccess:FDATE;
  578.                         ftimeLastAccess:FTIME;
  579.                         fdateLastWrite:FDATE;
  580.                         ftimeLastWrite:FTIME;
  581.                         cbFile:ULONG;
  582.                         cbFileAlloc:ULONG;
  583.                         attrFile:ULONG;          { widened field }
  584.                         cchName:BYTE;
  585.                         achName:CSTRING[CCHMAXPATHCOMP-1];
  586.                   END;
  587.  
  588.       PFILEFINDBUF4=^FILEFINDBUF4;
  589.       FILEFINDBUF4=RECORD   { pack 2 }
  590.                         oNextEntryOffset:ULONG;            { new field }
  591.                         fdateCreation:FDATE;
  592.                         ftimeCreation:FTIME;
  593.                         fdateLastAccess:FDATE;
  594.                         ftimeLastAccess:FTIME;
  595.                         fdateLastWrite:FDATE;
  596.                         ftimeLastWrite:FTIME;
  597.                         cbFile:ULONG;
  598.                         cbFileAlloc:ULONG;
  599.                         attrFile:ULONG;       { widened field }
  600.                         cbList:ULONG;
  601.                         cchName:BYTE;
  602.                         achName:CSTRING[CCHMAXPATHCOMP-1];
  603.                   END;
  604.  
  605.       { extended attribute structures }
  606.  
  607.       PGEA=^GEA;
  608.       GEA=RECORD  {pack 2}
  609.                 cbName:BYTE;        { name length not including NULL }
  610.                 szName:CHAR;        { attribute name }
  611.           END;
  612.  
  613.       PGEALIST=^GEALIST;
  614.       GEALIST=RECORD  { pack 2 }
  615.                    cbList:ULONG;    { total bytes of structure including full list }
  616.                    list:GEA;        { variable length GEA structures }
  617.               END;
  618.  
  619.       PFEA=^FEA;
  620.       FEA=RECORD  {pack 2}
  621.                 fEA:BYTE;           { flags                              }
  622.                 cbName:BYTE;        { name length not including NULL }
  623.                 cbValue:USHORT;     { value length }
  624.           END;
  625.  
  626.       { flags for _FEA.fEA }
  627. CONST
  628.          FEA_NEEDEA         =$80;   { need EA bit }
  629.  
  630. TYPE
  631.       PFEALIST=^FEALIST;
  632.       FEALIST=RECORD { pack 2}
  633.                    cbList:ULONG;    { total bytes of structure including full list }
  634.                    list:FEA;        { variable length FEA structures }
  635.               END;
  636.  
  637.       PEAOP=^EAOP;
  638.       EAOP=RECORD { pack 2}
  639.                  fpGEAList:PGEALIST; { general EA list }
  640.                  fpFEAList:PFEALIST; { full EA list }
  641.                  oError:ULONG;
  642.            END;
  643.  
  644.       PFEA2=^FEA2;
  645.       FEA2=RECORD {pack 1}
  646.                  oNextEntryOffset:ULONG;    { new field }
  647.                  fEA:BYTE;
  648.                  cbName:BYTE;
  649.                  cbValue:USHORT;
  650.                  szName:CString[1];            { new field }
  651.            END;
  652.  
  653.       PFEA2LIST=^FEA2LIST;
  654.       FEA2LIST=RECORD {pack 1}
  655.                      cbList:ULONG;
  656.                      list:ARRAY[0..0] OF FEA2;
  657.                END;
  658.  
  659.       PGEA2=^GEA2;
  660.       GEA2=RECORD {pack 1}
  661.                  oNextEntryOffset:ULONG; { new field }
  662.                  cbName:BYTE;
  663.                  szName:ARRAY[0..0] OF BYTE;         { new field }
  664.            END;
  665.  
  666.       PGEA2LIST=^GEA2LIST;
  667.       GEA2LIST=RECORD      { pack 1 }
  668.                      cbList:ULONG;
  669.                      list:ARRAY[0..0] OF GEA2;
  670.                END;
  671.  
  672.       PEAOP2=^EAOP2;
  673.       EAOP2=RECORD  { pack 1 }
  674.                   fpGEA2List:PGEA2LIST;       { GEA set }
  675.                   fpFEA2List:PFEA2LIST;       { FEA set }
  676.                   oError:ULONG;           { offset of FEA error }
  677.             END;
  678.  
  679.       {
  680.       * Equates for the types of EAs that follow the convention that we have
  681.       * established.
  682.       *
  683.       * Values =$FFFE thru =$8000 are reserved.
  684.       * Values =$0000 thru =$7fff are user definable.
  685.       * Value  =$FFFC is not used
  686.       }
  687. CONST
  688.          EAT_BINARY      =$FFFE;      { length preceeded binary }
  689.          EAT_ASCII       =$FFFD;      { length preceeded ASCII }
  690.          EAT_BITMAP      =$FFFB;      { length preceeded bitmap }
  691.          EAT_METAFILE    =$FFFA;      { length preceeded metafile }
  692.          EAT_ICON        =$FFF9;      { length preceeded icon }
  693.          EAT_EA          =$FFEE;      { length preceeded ASCII }
  694.                                           { name of associated data (#include) }
  695.          EAT_MVMT        =$FFDF;      { multi-valued, multi-typed field }
  696.          EAT_MVST        =$FFDE;      { multi-valued, single-typed field }
  697.          EAT_ASN1        =$FFDD;      { ASN.1 field }
  698.  
  699.    { File time and date types }
  700.  
  701. TYPE
  702.    PFILESTATUS=^FILESTATUS;
  703.    FILESTATUS=RECORD
  704.                   fdateCreation:FDATE;
  705.                   ftimeCreation:FTIME;
  706.                   fdateLastAccess:FDATE;
  707.                   ftimeLastAccess:FTIME;
  708.                   fdateLastWrite:FDATE;
  709.                   ftimeLastWrite:FTIME;
  710.                   cbFile:ULONG;
  711.                   cbFileAlloc:ULONG;
  712.                   attrFile:WORD;
  713.               END;
  714.  
  715.    PFILESTATUS2=^FILESTATUS2;
  716.    FILESTATUS2=RECORD
  717.                   fdateCreation:FDATE;
  718.                   ftimeCreation:FTIME;
  719.                   fdateLastAccess:FDATE;
  720.                   ftimeLastAccess:FTIME;
  721.                   fdateLastWrite:FDATE;
  722.                   ftimeLastWrite:FTIME;
  723.                   cbFile:ULONG;
  724.                   cbFileAlloc:ULONG;
  725.                   attrFile:WORD;
  726.                   cbList:ULONG;
  727.                END;
  728.  
  729.    PFILESTATUS3=^FILESTATUS3;
  730.    FILESTATUS3=RECORD
  731.                      fdateCreation:FDATE;
  732.                      ftimeCreation:FTIME;
  733.                      fdateLastAccess:FDATE;
  734.                      ftimeLastAccess:FTIME;
  735.                      fdateLastWrite:FDATE;
  736.                      ftimeLastWrite:FTIME;
  737.                      cbFile:ULONG;
  738.                      cbFileAlloc:ULONG;
  739.                      attrFile:ULONG;
  740.                END;
  741.  
  742.    PFILESTATUS4=^FILESTATUS4;
  743.    FILESTATUS4=RECORD
  744.                      fdateCreation:FDATE;
  745.                      ftimeCreation:FTIME;
  746.                      fdateLastAccess:FDATE;
  747.                      ftimeLastAccess:FTIME;
  748.                      fdateLastWrite:FDATE;
  749.                      ftimeLastWrite:FTIME;
  750.                      cbFile:ULONG;
  751.                      cbFileAlloc:ULONG;
  752.                      attrFile:ULONG;
  753.                      cbList:ULONG;
  754.                END;
  755.  
  756.    PFSALLOCATE=^FSALLOCATE;
  757.    FSALLOCATE=RECORD
  758.                    idFileSystem:ULONG;
  759.                    cSectorUnit:ULONG;
  760.                    cUnit:ULONG;
  761.                    cUnitAvail:ULONG;
  762.                    cbSector:USHORT;
  763.               END;
  764.  
  765.    HDIR=LHANDLE;
  766.  
  767.    { defines for DosSetPathInfo -pathinfo flag }
  768. CONST
  769.       DSPI_WRTTHRU    =$10;    { write through }
  770.  
  771.  
  772. TYPE
  773.    PDENA1=^DENA1;
  774.    DENA1=RECORD  { pack 1 }
  775.               reserved:UCHAR;     { 0 }
  776.               cbName:UCHAR;       { length of name exculding NULL }
  777.               cbValue:USHORT;     { length of value }
  778.               szName:UCHAR;       { variable length asciiz name }
  779.          END;
  780.  
  781.    PDENA2=^DENA2;
  782.    DENA2=FEA2;
  783.  
  784.    { Infolevels for DosEnumAttribute  }
  785. CONST
  786.       ENUMEA_LEVEL_NO_VALUE   =1;      { FEA without value }
  787.    { Reference types for DosEnumAttribute }
  788.       ENUMEA_REFTYPE_FHANDLE  =0;       { file handle }
  789.       ENUMEA_REFTYPE_PATH     =1;       { path name }
  790.       ENUMEA_REFTYPE_MAX      =ENUMEA_REFTYPE_PATH;
  791.  
  792.  
  793. { 32-bit Semaphore Support }
  794.  
  795. { Semaphore Attributes }
  796. CONST
  797.       DC_SEM_SHARED   =$01;   { DosCreateMutex, DosCreateEvent, and     }
  798.                               {   DosCreateMuxWait use it to indicate   }
  799.                               {   whether the semaphore is shared or    }
  800.                               {   private when the PSZ is null          }
  801.       DCMW_WAIT_ANY   =$02;   { DosCreateMuxWait option for wait on any }
  802.                               {   event/mutex to occur                  }
  803.       DCMW_WAIT_ALL   =$04;   { DosCreateMuxWait option for wait on all }
  804.                               {   events/mutexs to occur                }
  805.  
  806.       SEM_INDEFINITE_WAIT     =-1;
  807.       SEM_IMMEDIATE_RETURN    = 0;
  808.  
  809.  
  810. TYPE
  811.     HSEM=LONGWORD;
  812.  
  813.     PSEMRECORD=^SEMRECORD;
  814.     SEMRECORD=RECORD
  815.                     hsemCur:HSEM;
  816.                     ulUser:ULONG;
  817.               END;
  818.  
  819.  
  820.    HMTX=ULONG;
  821.    HMUX=ULONG;
  822.  
  823.  
  824. TYPE
  825.      HTIMER=LHANDLE;
  826.  
  827. CONST
  828.       PT_16BIT        =0;
  829.       PT_32BIT        =1;
  830.  
  831. {** Resource support }
  832.  
  833. { Predefined resource types }
  834. CONST
  835.       RT_POINTER      =1;   { mouse pointer shape }
  836.       RT_BITMAP       =2;   { bitmap }
  837.       RT_MENU         =3;   { menu template }
  838.       RT_DIALOG       =4;   { dialog template }
  839.       RT_STRING       =5;   { string tables }
  840.       RT_FONTDIR      =6;   { font directory }
  841.       RT_FONT         =7;   { font }
  842.       RT_ACCELTABLE   =8;   { accelerator tables }
  843.       RT_RCDATA       =9;   { binary data }
  844.       RT_MESSAGE      =10;  { error msg     tables }
  845.       RT_DLGINCLUDE   =11;  { dialog include file name }
  846.       RT_VKEYTBL      =12;  { key to vkey tables }
  847.       RT_KEYTBL       =13;  { key to UGL tables }
  848.       RT_CHARTBL      =14;  { glyph to character tables }
  849.       RT_DISPLAYINFO  =15;  { screen display information }
  850.  
  851.       RT_FKASHORT     =16;  { function key area short form }
  852.       RT_FKALONG      =17;  { function key area long form }
  853.  
  854.       RT_HELPTABLE    =18;  { Help table for Cary Help manager }
  855.       RT_HELPSUBTABLE =19;  { Help subtable for Cary Help manager }
  856.  
  857.       RT_FDDIR        =20;  { DBCS uniq/font driver directory }
  858.       RT_FD           =21;  { DBCS uniq/font driver }
  859.  
  860.       RT_MAX          =22;  { 1st unused Resource Type }
  861.  
  862.  
  863.       RF_ORDINALID    =$80000000; { ordinal id flag in resource table }
  864.  
  865.  
  866. {** NLS Support }
  867.  
  868. TYPE
  869.    PCOUNTRYCODE=^COUNTRYCODE;
  870.    COUNTRYCODE=RECORD
  871.                     country:ULONG;
  872.                     codepage:ULONG;
  873.                END;
  874.  
  875.    PCOUNTRYINFO=^COUNTRYINFO;
  876.    COUNTRYINFO=RECORD
  877.                     country:ULONG;
  878.                     codepage:ULONG;
  879.                     fsDateFmt:ULONG;
  880.                     szCurrency:CSTRING[4];
  881.                     szThousandsSeparator:CSTRING[1];
  882.                     szDecimal:CSTRING[1];
  883.                     szDateSeparator:CSTRING[1];
  884.                     szTimeSeparator:CSTRING[1];
  885.                     fsCurrencyFmt:UCHAR;
  886.                     cDecimalPlace:UCHAR;
  887.                     fsTimeFmt:UCHAR;
  888.                     abReserved1:ARRAY[0..1] OF USHORT;
  889.                     szDataSeparator:CSTRING[1];
  890.                     abReserved2:ARRAY[0..4] OF USHORT;
  891.               END;
  892.  
  893.    { DosSetSigExceptionFocus codes }
  894. CONST
  895.       SIG_UNSETFOCUS  =0;
  896.       SIG_SETFOCUS    =1;
  897.  
  898. TYPE
  899.     HQUEUE=LHANDLE;
  900.  
  901.     PREQUESTDATA=^REQUESTDATA;
  902.     REQUESTDATA=RECORD
  903.                     pid:PID;
  904.                     ulData:ULONG;
  905.                 END;
  906.  
  907. CONST
  908.          QUE_FIFO              =0;
  909.          QUE_LIFO              =1;
  910.          QUE_PRIORITY          =2;
  911.          QUE_NOCONVERT_ADDRESS =0;
  912.          QUE_CONVERT_ADDRESS   =4;
  913.  
  914.    { definitions for DosSearchPath control word }
  915. CONST
  916.       DSP_IMPLIEDCUR          =1; { current dir will be searched first }
  917.       DSP_PATHREF             =2; { from env.variable }
  918.       DSP_IGNORENETERR        =4; { ignore net errs & continue search }
  919.  
  920.    { indices for DosQuerySysInfo }
  921.       QSV_MAX_PATH_LENGTH     =1;
  922.       Q_MAX_PATH_LENGTH       =QSV_MAX_PATH_LENGTH;
  923.       QSV_MAX_TEXT_SESSIONS   =2;
  924.       QSV_MAX_PM_SESSIONS     =3;
  925.       QSV_MAX_VDM_SESSIONS    =4;
  926.       QSV_BOOT_DRIVE          =5;       { 1=A, 2=B, etc. }
  927.       QSV_DYN_PRI_VARIATION   =6;       { 0=Absolute, 1=Dynamic }
  928.       QSV_MAX_WAIT            =7;       { seconds }
  929.       QSV_MIN_SLICE           =8;       { milli seconds }
  930.       QSV_MAX_SLICE           =9;       { milli seconds }
  931.       QSV_PAGE_SIZE           =10;
  932.       QSV_VERSION_MAJOR       =11;
  933.       QSV_VERSION_MINOR       =12;
  934.       QSV_VERSION_REVISION    =13;      { Revision letter }
  935.       QSV_MS_COUNT            =14;      { Free running millisecond counter }
  936.       QSV_TIME_LOW            =15;      { Low dword of time in seconds }
  937.       QSV_TIME_HIGH           =16;      { High dword of time in seconds }
  938.       QSV_TOTPHYSMEM          =17;      { Physical memory on system }
  939.       QSV_TOTRESMEM           =18;      { Resident memory on system }
  940.       QSV_TOTAVAILMEM         =19;      { Available memory for all processes }
  941.       QSV_MAXPRMEM            =20;      { Avail private mem for calling proc }
  942.       QSV_MAXSHMEM            =21;      { Avail shared mem for calling proc }
  943.       QSV_TIMER_INTERVAL      =22;      { Timer interval in tenths of ms }
  944.       QSV_MAX_COMP_LENGTH     =23;      { max len of one component in a name }
  945.       QSV_MAX                 =QSV_MAX_COMP_LENGTH;
  946.  
  947.    { definitions for DosError - combine with | }
  948.       FERR_DISABLEHARDERR     =$00000000;     { disable hard error popups }
  949.       FERR_ENABLEHARDERR      =$00000001;     { enable hard error popups }
  950.       FERR_ENABLEEXCEPTION    =$00000000;     { enable exception popups }
  951.       FERR_DISABLEEXCEPTION   =$00000002;     { disable exception popups }
  952.  
  953.    { definitions for DosQueryRASInfo Index }
  954.       SIS_MMIOADDR            =0;
  955.       SIS_MEC_TABLE           =1;
  956.       SIS_SYS_LOG             =2;
  957.  
  958. {** Session manager support }
  959. TYPE
  960.    PSTARTDATA=^STARTDATA;
  961.    STARTDATA=RECORD
  962.                   Length:USHORT;
  963.                   Related:USHORT;
  964.                   FgBg:USHORT;
  965.                   TraceOpt:USHORT;
  966.                   PgmTitle:PChar;
  967.                   PgmName:PChar;
  968.                   PgmInputs:PChar;
  969.                   TermQ:PBYTE;
  970.                   Environment:PBYTE;
  971.                   InheritOpt:USHORT;
  972.                   SessionType:USHORT;
  973.                   IconFile:PChar;
  974.                   PgmHandle:ULONG;
  975.                   PgmControl:USHORT;
  976.                   InitXPos:USHORT;
  977.                   InitYPos:USHORT;
  978.                   InitXSize:USHORT;
  979.                   InitYSize:USHORT;
  980.                   Reserved:USHORT;
  981.                   ObjectBuffer:PChar;
  982.                   ObjectBuffLen:ULONG;
  983.             END;
  984.  
  985. CONST
  986.       SSF_RELATED_INDEPENDENT =0;
  987.       SSF_RELATED_CHILD       =1;
  988.  
  989.       SSF_FGBG_FORE           =0;
  990.       SSF_FGBG_BACK           =1;
  991.  
  992.       SSF_TRACEOPT_NONE       =0;
  993.       SSF_TRACEOPT_TRACE      =1;
  994.       SSF_TRACEOPT_TRACEALL   =2;
  995.  
  996.       SSF_INHERTOPT_SHELL     =0;
  997.       SSF_INHERTOPT_PARENT    =1;
  998.  
  999.    { note that these types are identical to those in pmshl.h for PROG_* }
  1000.       SSF_TYPE_DEFAULT        =0;
  1001.       SSF_TYPE_FULLSCREEN     =1;
  1002.       SSF_TYPE_WINDOWABLEVIO  =2;
  1003.       SSF_TYPE_PM             =3;
  1004.       SSF_TYPE_VDM            =4;
  1005.       SSF_TYPE_GROUP          =5;
  1006.       SSF_TYPE_DLL            =6;
  1007.       SSF_TYPE_WINDOWEDVDM    =7;
  1008.       SSF_TYPE_PDD            =8;
  1009.       SSF_TYPE_VDD            =9;
  1010.  
  1011.    { note that these flags are identical to those in pmshl.h for SHE_* }
  1012.       SSF_CONTROL_VISIBLE     =$0000;
  1013.       SSF_CONTROL_INVISIBLE   =$0001;
  1014.       SSF_CONTROL_MAXIMIZE    =$0002;
  1015.       SSF_CONTROL_MINIMIZE    =$0004;
  1016.       SSF_CONTROL_NOAUTOCLOSE =$0008;
  1017.       SSF_CONTROL_SETPOS      =$8000;
  1018.  
  1019. TYPE
  1020.    PSTATUSDATA=^STATUSDATA;
  1021.    STATUSDATA=RECORD
  1022.                     Length:USHORT;
  1023.                     SelectInd:USHORT;
  1024.                     BondInd:USHORT;
  1025.               END;
  1026.  
  1027.    { SelectInd and BondInd paramater values for DosSetSession }
  1028. CONST
  1029.       SET_SESSION_UNCHANGED      =0;
  1030.       SET_SESSION_SELECTABLE     =1;
  1031.       SET_SESSION_NON_SELECTABLE =2;
  1032.       SET_SESSION_BOND           =1;
  1033.       SET_SESSION_NO_BOND        =2;
  1034.  
  1035.    { TargetOption (scope) parameter values for DosStopSession }
  1036.       STOP_SESSION_SPECIFIED     =0;
  1037.       STOP_SESSION_ALL           =1;
  1038.  
  1039.    { AppType returned in by DosQueryAppType in pFlags as follows          }
  1040. CONST
  1041.       FAPPTYP_NOTSPEC         =$0000;
  1042.       FAPPTYP_NOTWINDOWCOMPAT =$0001;
  1043.       FAPPTYP_WINDOWCOMPAT    =$0002;
  1044.       FAPPTYP_WINDOWAPI       =$0003;
  1045.       FAPPTYP_BOUND           =$0008;
  1046.       FAPPTYP_DLL             =$0010;
  1047.       FAPPTYP_DOS             =$0020;
  1048.       FAPPTYP_PHYSDRV         =$0040;  { physical device driver       }
  1049.       FAPPTYP_VIRTDRV         =$0080;  { virtual device driver        }
  1050.       FAPPTYP_PROTDLL         =$0100;  { 'protected memory' dll       }
  1051.       FAPPTYP_WINDOWSREAL     =$0200;  { Windows real mode app        }
  1052.       FAPPTYP_WINDOWSPROT     =$0400;  { Windows protect mode app     }
  1053.       FAPPTYP_WINDOWSPROT31   =$1000;  { Windows 3.1 protect mode app }
  1054.       FAPPTYP_32BIT           =$4000;
  1055.       FAPPTYP_EXETYPE         =FAPPTYP_WINDOWAPI;
  1056.  
  1057.       FAPPTYP_RESERVED        =NOT (FAPPTYP_WINDOWAPI | FAPPTYP_BOUND |
  1058.                                     FAPPTYP_DLL | FAPPTYP_DOS |
  1059.                                     FAPPTYP_PHYSDRV | FAPPTYP_VIRTDRV |
  1060.                                     FAPPTYP_PROTDLL | FAPPTYP_32BIT);
  1061.  
  1062.       EAT_APPTYP_PMAPI        =$00;            { Uses PM API }
  1063.       EAT_APPTYP_DOS          =$01;            { DOS APP }
  1064.       EAT_APPTYP_PMW          =$02;            { Window compatible }
  1065.       EAT_APPTYP_NOPMW        =$03;            { Not Window compatible }
  1066.       EAT_APPTYP_EXETYPE      =$03;            { EXE type mask }
  1067.       EAT_APPTYP_RESERVED     =NOT EAT_APPTYP_EXETYPE;
  1068.  
  1069. CONST
  1070.       DEVINFO_PRINTER         =0;       { Number of printers attached }
  1071.       DEVINFO_RS232           =1;       { Number of RS232 ports }
  1072.       DEVINFO_FLOPPY          =2;       { Number of diskette drives }
  1073.       DEVINFO_COPROCESSOR     =3;       { Presence of math coprocessor }
  1074.       DEVINFO_SUBMODEL        =4;       { PC Submodel Type }
  1075.       DEVINFO_MODEL           =5;       { PC Model Type }
  1076.       DEVINFO_ADAPTER         =6;       { Primary display adapter type }
  1077.  
  1078.  
  1079. CONST
  1080.       INFO_COUNT_PARTITIONABLE_DISKS  =1;       { # of partitionable disks }
  1081.       INFO_GETIOCTLHANDLE             =2;       { Obtain handle            }
  1082.       INFO_FREEIOCTLHANDLE            =3;       { Release handle           }
  1083.  
  1084.  
  1085.  
  1086. {** Data structures used with named pipes **}
  1087. TYPE
  1088.    HPIPE=LHANDLE;
  1089.  
  1090.  
  1091.    PAVAILDATA=^AVAILDATA;
  1092.    AVAILDATA=RECORD
  1093.                  cbpipe:USHORT;      { bytes left in the pipe }
  1094.                  cbmessage:USHORT;   { bytes left in the current message }
  1095.              END;
  1096.  
  1097.    PPIPEINFO=^PIPEINFO;
  1098.    PIPEINFO=RECORD
  1099.                  cbOut:USHORT;       { length of outgoing I/O buffer }
  1100.                  cbIn:USHORT;        { length of incoming I/O buffer }
  1101.                  cbMaxInst:BYTE;     { maximum number of instances   }
  1102.                  cbCurInst:BYTE;     { current number of instances   }
  1103.                  cbName:BYTE;        { length of pipe name           }
  1104.                  szName:CHAR;        { start of name                 }
  1105.             END;
  1106.  
  1107.    PPIPESEMSTATE=^PIPESEMSTATE;
  1108.    PIPESEMSTATE=RECORD
  1109.                      fStatus:BYTE;  { type of record, 0 = EOI, 1 = read ok, }
  1110.                                     { 2 = write ok, 3 = pipe closed         }
  1111.                      fFlag:BYTE;    { additional info, 01 = waiting thread  }
  1112.                      usKey:USHORT;  { user's key value                      }
  1113.                      usAvail:USHORT;{ available data/space if status = 1/2  }
  1114.                 END;
  1115.  
  1116. CONST
  1117.       NP_INDEFINITE_WAIT      =-1;
  1118.       NP_DEFAULT_WAIT         =0;
  1119.  
  1120.    { DosPeekNmPipe() pipe states }
  1121.  
  1122.       NP_STATE_DISCONNECTED   =$0001;
  1123.       NP_STATE_LISTENING      =$0002;
  1124.       NP_STATE_CONNECTED      =$0003;
  1125.       NP_STATE_CLOSING        =$0004;
  1126.  
  1127.    { DosCreateNPipe open modes }
  1128.  
  1129.       NP_ACCESS_INBOUND       =$0000;
  1130.       NP_ACCESS_OUTBOUND      =$0001;
  1131.       NP_ACCESS_DUPLEX        =$0002;
  1132.       NP_INHERIT              =$0000;
  1133.       NP_NOINHERIT            =$0080;
  1134.       NP_WRITEBEHIND          =$0000;
  1135.       NP_NOWRITEBEHIND        =$4000;
  1136.  
  1137.    { DosCreateNPipe and DosQueryNPHState state }
  1138.  
  1139.       NP_READMODE_BYTE        =$0000;
  1140.       NP_READMODE_MESSAGE     =$0100;
  1141.       NP_TYPE_BYTE            =$0000;
  1142.       NP_TYPE_MESSAGE         =$0400;
  1143.       NP_END_CLIENT           =$0000;
  1144.       NP_END_SERVER           =$4000;
  1145.       NP_WAIT                 =$0000;
  1146.       NP_NOWAIT               =$8000;
  1147.       NP_UNLIMITED_INSTANCES  =$00FF;
  1148.  
  1149.    { values in fStatus }
  1150. CONST
  1151.       NPSS_EOI                   =0;     { End Of Information    }
  1152.       NPSS_RDATA                 =1;     { read data available   }
  1153.       NPSS_WSPACE                =2;     { write space available }
  1154.       NPSS_CLOSE                 =3;     { pipe in CLOSING state }
  1155.  
  1156.    { values in npss_flag }
  1157.       NPSS_WAIT                  =$01;  { waiting thread on end of pipe }
  1158.  
  1159.    { defined bits in pipe mode }
  1160.       NP_NBLK                    =$8000; { non-blocking read/write }
  1161.       NP_SERVER                  =$4000; { set if server end       }
  1162.       NP_WMESG                   =$0400; { write messages          }
  1163.       NP_RMESG                   =$0100; { read as messages        }
  1164.       NP_ICOUNT                  =$00FF; { instance count field    }
  1165.  
  1166.  
  1167.    {Named pipes may be in one of several states depending on the actions
  1168.    * that have been taken on it by the server end and client end.  The
  1169.    * following state/action table summarizes the valid state transitions:
  1170.    *
  1171.    * Current state           Action                  Next state
  1172.    *
  1173.    *  <none>             server DosMakeNmPipe        DISCONNECTED
  1174.    *  DISCONNECTED       server connect              LISTENING
  1175.    *  LISTENING          client open                 CONNECTED
  1176.    *  CONNECTED          server disconn              DISCONNECTED
  1177.    *  CONNECTED          client close                CLOSING
  1178.    *  CLOSING            server disconn              DISCONNECTED
  1179.    *  CONNECTED          server close                CLOSING
  1180.    *  <any other>        server close                <pipe deallocated>
  1181.    *
  1182.    * If a server disconnects his end of the pipe, the client end will enter a
  1183.    * special state in which any future operations (except close) on the file
  1184.    * descriptor associated with the pipe will return an error.
  1185.    }
  1186.  
  1187.    {
  1188.    *      Values for named pipe state
  1189.    }
  1190.  
  1191.       NP_DISCONNECTED       =1;         { after pipe creation or Disconnect }
  1192.       NP_LISTENING          =2;         { after DosNmPipeConnect            }
  1193.       NP_CONNECTED          =3;         { after Client open                 }
  1194.       NP_CLOSING            =4;         { after Client or Server close      }
  1195.  
  1196.  
  1197.    { DosProfile ordinal number }
  1198. CONST
  1199.       PROF_ORDINAL        =133;
  1200.  
  1201.    { DosProfile usType }
  1202.  
  1203.       PROF_SYSTEM           =0;
  1204.       PROF_USER             =1;
  1205.       PROF_USEDD            =2;
  1206.       PROF_KERNEL           =4;
  1207.       PROF_VERBOSE          =8;
  1208.       PROF_ENABLE           =16;
  1209.  
  1210.    { DosProfile usFunc }
  1211.  
  1212.       PROF_ALLOC            =0;
  1213.       PROF_CLEAR            =1;
  1214.       PROF_ON               =2;
  1215.       PROF_OFF              =3;
  1216.       PROF_DUMP             =4;
  1217.       PROF_FREE             =5;
  1218.  
  1219.    { DosProfile tic count granularity (DWORD) }
  1220.  
  1221.       PROF_SHIFT            =2;
  1222.  
  1223.    { DosProfile module name string length }
  1224.  
  1225.       PROF_MOD_NAME_SIZE    =10;
  1226.  
  1227.    { DosProfile error code for end of data }
  1228.  
  1229.       PROF_END_OF_DATA      =13;
  1230.  
  1231.  
  1232. TYPE
  1233.     HVDD=LHANDLE;
  1234.  
  1235.  
  1236. IMPORTS
  1237.  
  1238. FUNCTION DosBeep(freq,dur:ULONG):APIRET;
  1239.                     APIENTRY;             DOSCALLS index 286;
  1240. FUNCTION DosExit(action,result:ULONG):APIRET;
  1241.                     APIENTRY;             DOSCALLS index 234;
  1242. FUNCTION DosCreateThread(VAR aptid:TID;pfn:POINTER;param:POINTER;flag:ULONG;
  1243.                          cbStack:ULONG):APIRET;
  1244.                     APIENTRY;             DOSCALLS index 311;
  1245. FUNCTION DosResumeThread(atid:TID):APIRET;
  1246.                     APIENTRY;             DOSCALLS index 237;
  1247. FUNCTION DosSuspendThread(atid:TID):APIRET;
  1248.                     APIENTRY;             DOSCALLS index 238;
  1249. FUNCTION DosGetInfoBlocks(VAR pptib:PTIB;VAR pppib:PPIB):APIRET;
  1250.                     APIENTRY;             DOSCALLS index 312;
  1251. FUNCTION DosKillThread(atid:TID):APIRET;
  1252.                     APIENTRY;             DOSCALLS index 111;
  1253. FUNCTION DosWaitChild(action,option:ULONG;VAR pres:RESULTCODES;
  1254.                       VAR appid:PID;apid:PID):APIRET;
  1255.                     APIENTRY;             DOSCALLS index 280;
  1256. FUNCTION DosWaitThread(VAR aptid:TID;option:ULONG):APIRET;
  1257.                     APIENTRY;             DOSCALLS index 349;
  1258. FUNCTION DosSleep(msec:ULONG):APIRET;
  1259.                     APIENTRY;             DOSCALLS index 229;
  1260. FUNCTION DosDebug(VAR apdbgbuf:TDBGBUF):APIRET;
  1261.                     APIENTRY;             DOSCALLS index 317;
  1262. FUNCTION DosEnterCritSec:APIRET;
  1263.                     APIENTRY;             DOSCALLS index 232;
  1264. FUNCTION DosExitCritSec:APIRET;
  1265.                     APIENTRY;             DOSCALLS index 233;
  1266. FUNCTION DosExitList(ordercode:ULONG;pfn:POINTER):APIRET;
  1267.                     APIENTRY;             DOSCALLS index 296;
  1268. FUNCTION DosExecPgm(pObjname:POINTER;cbObjname:LONG;execFlag:ULONG;
  1269.                     VAR pArg,pEnv:CSTRING;VAR pRes:RESULTCODES;
  1270.                     VAR pName:CSTRING):APIRET;
  1271.                     APIENTRY;             DOSCALLS index 283;
  1272. FUNCTION  DosSetPriority(scope,aclass:ULONG;delta:LONG;PorTid:ULONG):APIRET;
  1273.                     APIENTRY;             DOSCALLS index 236;
  1274. FUNCTION DosKillProcess(action:ULONG;apid:PID):APIRET;
  1275.                     APIENTRY;             DOSCALLS index 235;
  1276. FUNCTION DosSetFileLocks(ahFile:HFILE;VAR pflUnlock,pflLock:FILELOCK;
  1277.                          timeout,flags:ULONG):APIRET;
  1278.                     APIENTRY;             DOSCALLS index 428;
  1279. FUNCTION DosProtectSetFileLocks(ahFile:HFILE;VAR pflUnlock,pflLock:FILELOCK;
  1280.                                 timeout,flags:ULONG;
  1281.                                 fhFileHandleLockID:FHLOCK):APIRET;
  1282.                     APIENTRY;             DOSCALLS index 639;
  1283. FUNCTION DosCancelLockRequest(ahFile:HFILE;VAR pflLock:FILELOCK):APIRET;
  1284.                     APIENTRY;             DOSCALLS index 429;
  1285. FUNCTION DosOpen(pszFileName:CSTRING;VAR pHf:HFILE;VAR pulAction:ULONG;
  1286.                  cbFile,ulAttribute,fsOpenFlags,fsOpenMode:ULONG;
  1287.                  VAR apeaop2:EAOP2):APIRET;
  1288.                     APIENTRY;             DOSCALLS index 273;
  1289. FUNCTION DosProtectOpen(pszFileName:CSTRING;VAR phf:HFILE;VAR pulAction:ULONG;
  1290.                         cbFile,ulAttribute,fsOpenFlags,fsOpenMode:ULONG;
  1291.                         VAR apeaop2:EAOP2;
  1292.                         VAR pfhFileHandleLockID:FHLOCK):APIRET;
  1293.                     APIENTRY;             DOSCALLS index 637;
  1294. FUNCTION DosClose(ahFile:HFILE):APIRET;
  1295.                     APIENTRY;             DOSCALLS index 257;
  1296. FUNCTION DosProtectClose(ahFile:HFILE;fhFileHandleLockID:FHLOCK):APIRET;
  1297.                     APIENTRY;             DOSCALLS index 638;
  1298. FUNCTION DosRead(ahFile:HFILE;VAR pBuffer;cbRead:ULONG;
  1299.                  VAR pcbActual:ULONG):APIRET;
  1300.                     APIENTRY;             DOSCALLS index 281;
  1301. FUNCTION DosProtectRead(ahFile:HFILE;VAR pBuffer;cbRead:ULONG;
  1302.                         VAR pcbActual:ULONG;fhFileHandleLockID:FHLOCK):APIRET;
  1303.                     APIENTRY;             DOSCALLS index 641;
  1304. FUNCTION DosWrite(ahFile:HFILE;CONST pBuffer;cbWrite:ULONG;
  1305.                   VAR pcbActual:ULONG):APIRET;
  1306.                     APIENTRY;             DOSCALLS index 282;
  1307. FUNCTION DosProtectWrite(ahFile:HFILE;VAR pBuffer;cbWrite:ULONG;
  1308.                          VAR pcbActual:ULONG;
  1309.                          fhFileHandleLockID:FHLOCK):APIRET;
  1310.                     APIENTRY;             DOSCALLS index 642;
  1311. FUNCTION DosDelete(VAR pszFile:CSTRING):APIRET;
  1312.                     APIENTRY;             DOSCALLS index 259;
  1313. FUNCTION DosForceDelete(VAR pszFile:CSTRING):APIRET;
  1314.                     APIENTRY;             DOSCALLS index 110;
  1315. FUNCTION DosDupHandle(ahFile:HFILE;VAR apHfile:HFILE):APIRET;
  1316.                     APIENTRY;             DOSCALLS index 260;
  1317. FUNCTION DosQueryFHState(ahFile:HFILE;VAR pMode:ULONG):APIRET;
  1318.                     APIENTRY;             DOSCALLS index 276;
  1319. FUNCTION DosProtectQueryFHState(ahFile:HFILE;VAR pMode:ULONG;
  1320.                                 fhFileHandleLockID:FHLOCK):APIRET;
  1321.                     APIENTRY;             DOSCALLS index 645;
  1322. FUNCTION DosSetFHState(ahFile:HFILE;mode:ULONG):APIRET;
  1323.                     APIENTRY;             DOSCALLS index 221;
  1324. FUNCTION DosProtectSetFHState(ahFile:HFILE;mode:ULONG;
  1325.                               fhFileHandleLockID:FHLOCK):APIRET;
  1326.                     APIENTRY;             DOSCALLS index 644;
  1327. FUNCTION DosQueryHType(ahFile:HFILE;VAR pType,pAttr:ULONG):APIRET;
  1328.                     APIENTRY;             DOSCALLS index 224;
  1329. FUNCTION DosFindFirst(VAR pszFileSpec:CSTRING;VAR aphdir:HDIR;flAttribute:ULONG;
  1330.                       VAR pfindbuf;cbBuf:ULONG;VAR pcFileNames:ULONG;
  1331.                       ulInfoLevel:ULONG):APIRET;
  1332.                     APIENTRY;             DOSCALLS index 264;
  1333. FUNCTION DosFindNext(ahDir:HDIR;VAR pfindbuf;cbfindbuf:ULONG;
  1334.                      VAR pcFilenames:ULONG):APIRET;
  1335.                     APIENTRY;             DOSCALLS index 265;
  1336. FUNCTION DosFindClose(ahDir:HDIR):APIRET;
  1337.                     APIENTRY;             DOSCALLS index 263;
  1338. FUNCTION DosFSAttach(VAR pszDevice:CSTRING;VAR pszFilesystem:CSTRING;VAR pData;
  1339.                      cbData:ULONG;flag:ULONG):APIRET;
  1340.                     APIENTRY;             DOSCALLS index 269;
  1341. FUNCTION DosQueryFSAttach(VAR pszDeviceName:CSTRING;ulOrdinal,ulFSAInfoLevel:ULONG;
  1342.                           VAR pfsqb:FSQBUFFER2;
  1343.                           VAR pcbBuffLength:ULONG):APIRET;
  1344.                     APIENTRY;             DOSCALLS index 277;
  1345. FUNCTION DosFSCtl(VAR pData;cbData:ULONG;VAR pcbData:ULONG;VAR pParms;
  1346.                   cbParms:ULONG;VAR pcbParms:ULONG;afunction:ULONG;
  1347.                   VAR pszRoute:CSTRING;ahFile:HFILE;method:ULONG):APIRET;
  1348.                     APIENTRY;             DOSCALLS index 285;
  1349. FUNCTION DosSetFileSize(ahFile:HFILE;cbSize:ULONG):APIRET;
  1350.                     APIENTRY;             DOSCALLS index 272;
  1351. FUNCTION DosProtectSetFileSize(ahFile:HFILE;cbSize:ULONG;
  1352.                                fhFileHandleLockID:FHLOCK):APIRET;
  1353.                     APIENTRY;             DOSCALLS index 640;
  1354. FUNCTION DosResetBuffer(ahFile:HFILE):APIRET;
  1355.                     APIENTRY;             DOSCALLS index 254;
  1356. FUNCTION DosSetFilePtr(ahFile:HFILE;ib:LONG;method:ULONG;
  1357.                        VAR ibActual:ULONG):APIRET;
  1358.                     APIENTRY;             DOSCALLS index 256;
  1359. FUNCTION DosProtectSetFilePtr(ahFile:HFILE;ib:LONG;method:ULONG;
  1360.                               VAR ibActual:ULONG;
  1361.                               fhFileHandleLockID:FHLOCK):APIRET;
  1362.                     APIENTRY;             DOSCALLS index 621;
  1363. FUNCTION DosMove(VAR pszOld,pszNew:CSTRING):APIRET;
  1364.                     APIENTRY;             DOSCALLS index 271;
  1365. FUNCTION DosCopy(VAR pszOld,pszNew:CSTRING;option:ULONG):APIRET;
  1366.                     APIENTRY;             DOSCALLS index 258;
  1367. FUNCTION DosEditName(metalevel:ULONG;VAR pszSource,pszEdit:CSTRING;
  1368.                      VAR pszTarget;cbTarget:ULONG):APIRET;
  1369.                     APIENTRY;             DOSCALLS index 261;
  1370. FUNCTION DosCreateDir(pszDirName:CSTRING;VAR apeaop2:EAOP2):APIRET;
  1371.                     APIENTRY;             DOSCALLS index 270;
  1372. FUNCTION DosDeleteDir(pszDir:CSTRING):APIRET;
  1373.                     APIENTRY;             DOSCALLS index 226;
  1374. FUNCTION DosSetDefaultDisk(disknum:ULONG):APIRET;
  1375.                     APIENTRY;             DOSCALLS index 220;
  1376. FUNCTION DosQueryCurrentDisk(VAR pdisknum,plogical:ULONG):APIRET;
  1377.                     APIENTRY;             DOSCALLS index 275;
  1378. FUNCTION DosSetCurrentDir(pszDir:CSTRING):APIRET;
  1379.                     APIENTRY;             DOSCALLS index 255;
  1380. FUNCTION DosQueryCurrentDir(disknum:ULONG;VAR pBuf;
  1381.                             VAR pcbBuf:ULONG):APIRET;
  1382.                     APIENTRY;             DOSCALLS index 274;
  1383. FUNCTION DosQueryFSInfo(disknum,infolevel:ULONG;VAR pBuf;
  1384.                         cbBuf:ULONG):APIRET;
  1385.                     APIENTRY;             DOSCALLS index 278;
  1386. FUNCTION DosSetFSInfo(disknum,infolevel:ULONG;VAR pBuf;
  1387.                       cbBuf:ULONG):APIRET;
  1388.                     APIENTRY;             DOSCALLS index 222;
  1389. FUNCTION DosQueryVerify(VAR apBool:ULONG):APIRET;
  1390.                     APIENTRY;             DOSCALLS index 225;
  1391. FUNCTION DosSetVerify(apBool:ULONG):APIRET;
  1392.                     APIENTRY;             DOSCALLS index 210;
  1393. FUNCTION DosSetMaxFH(cFH:ULONG):APIRET;
  1394.                     APIENTRY;             DOSCALLS index 209;
  1395. FUNCTION DosSetRelMaxFH(VAR pcbReqCount:LONG;
  1396.                         VAR pcbCurMaxFH:ULONG):APIRET;
  1397.                     APIENTRY;             DOSCALLS index 382;
  1398. FUNCTION DosQueryFileInfo(hf:HFILE;ulInfoLevel:ULONG;
  1399.                           VAR pInfo;cbInfoBuf:ULONG):APIRET;
  1400.                     APIENTRY;             DOSCALLS index 279;
  1401. FUNCTION DosProtectQueryFileInfo(hf:HFILE;ulInfoLevel:ULONG;
  1402.                                  VAR pInfo;cbInfoBuf:ULONG;
  1403.                                  fhFileHandleLockID:FHLOCK):APIRET;
  1404.                     APIENTRY;             DOSCALLS index 646;
  1405. FUNCTION DosSetFileInfo(hf:HFILE;ulInfoLevel:ULONG;VAR pInfoBuf;
  1406.                         cbInfoBuf:ULONG):APIRET;
  1407.                     APIENTRY;             DOSCALLS index 218;
  1408. FUNCTION DosProtectSetFileInfo(hf:HFILE;ulInfoLevel:ULONG;VAR pInfoBuf;
  1409.                                cbInfoBuf:ULONG;
  1410.                                fhFileHandleLockID:FHLOCK):APIRET;
  1411.                     APIENTRY;             DOSCALLS index 643;
  1412. FUNCTION DosQueryPathInfo(VAR pszPathName:CSTRING;ulInfoLevel:ULONG;VAR pInfoBuf;
  1413.                           cbInfoBuf:ULONG):APIRET;
  1414.                     APIENTRY;             DOSCALLS index 223;
  1415. FUNCTION DosSetPathInfo(pszPathName:CSTRING;ulInfoLevel:ULONG;VAR pInfoBuf;
  1416.                         cbInfoBuf,flOptions:ULONG):APIRET;
  1417.                     APIENTRY;             DOSCALLS index 219;
  1418. FUNCTION DosShutdown(ulReserved:ULONG):APIRET;
  1419.                     APIENTRY;             DOSCALLS index 415;
  1420. FUNCTION DosEnumAttribute(ulRefType:ULONG;VAR pvFile;ulEntry:ULONG;
  1421.                           VAR pvBuf;cbBuf:ULONG;VAR pulCount:ULONG;
  1422.                           ulInfoLevel:ULONG):APIRET;
  1423.                     APIENTRY;             DOSCALLS index 372;
  1424. FUNCTION DosProtectEnumAttribute(ulRefType:ULONG;VAR pvFile;
  1425.                                  ulEntry:ULONG;VAR pvBuf;cbBuf:ULONG;
  1426.                                  VAR pulCount:ULONG;ulInfoLevel:ULONG;
  1427.                                  fhFileHandleLockID:FHLOCK):APIRET;
  1428.                     APIENTRY;             DOSCALLS index 636;
  1429. FUNCTION DosAllocMem(VAR ppb:POINTER;cb,flag:ULONG):APIRET;
  1430.                     APIENTRY;             DOSCALLS index 299;
  1431. FUNCTION DosFreeMem(pb:POINTER):APIRET;
  1432.                     APIENTRY;             DOSCALLS index 304;
  1433. FUNCTION DosSetMem(pb:POINTER;cb,flag:ULONG):APIRET;
  1434.                     APIENTRY;             DOSCALLS index 305;
  1435. FUNCTION DosGiveSharedMem(pb:POINTER;apid:PID;flag:ULONG):APIRET;
  1436.                     APIENTRY;             DOSCALLS index 303;
  1437. FUNCTION DosGetSharedMem(pb:POINTER;flag:ULONG):APIRET;
  1438.                     APIENTRY;             DOSCALLS index 302;
  1439. FUNCTION DosGetNamedSharedMem(VAR ppb:POINTER;pszName:CSTRING;
  1440.                               flag:ULONG):APIRET;
  1441.                     APIENTRY;             DOSCALLS index 301;
  1442. FUNCTION DosAllocSharedMem(VAR ppb:POINTER;VAR pszName:CSTRING;
  1443.                            cb,flag:ULONG):APIRET;
  1444.                     APIENTRY;             DOSCALLS index 300;
  1445. FUNCTION DosQueryMem(pb:POINTER;VAR pcb,pFlag:ULONG):APIRET;
  1446.                     APIENTRY;             DOSCALLS index 306;
  1447. FUNCTION DosSubAllocMem(pbBase:POINTER;VAR ppb:POINTER;
  1448.                         cb:ULONG):APIRET;
  1449.                     APIENTRY;             DOSCALLS index 345;
  1450. FUNCTION DosSubFreeMem(pbBase:POINTER;pb:POINTER;cb:ULONG):APIRET;
  1451.                     APIENTRY;             DOSCALLS index 346;
  1452. FUNCTION DosSubSetMem(pbBase:POINTER;flag,cb:ULONG):APIRET;
  1453.                     APIENTRY;             DOSCALLS index 344;
  1454. FUNCTION DosSubUnsetMem(pbBase:POINTER):APIRET;
  1455.                     APIENTRY;             DOSCALLS index 347;
  1456. FUNCTION DosCreateEventSem(VAR pszName:CSTRING;VAR aphev:HEV;flAttr:ULONG;
  1457.                            fState:BOOL):APIRET;
  1458.                     APIENTRY;             DOSCALLS index 324;
  1459. FUNCTION DosOpenEventSem (VAR pszName:CSTRING;VAR aphev:HEV):APIRET;
  1460.                     APIENTRY;             DOSCALLS index 325;
  1461. FUNCTION DosCloseEventSem(ahev:HEV):APIRET;
  1462.                     APIENTRY;             DOSCALLS index 326;
  1463. FUNCTION DosResetEventSem(ahev:HEV;VAR pulPostCt:ULONG):APIRET;
  1464.                     APIENTRY;             DOSCALLS index 327;
  1465. FUNCTION DosPostEventSem(ahev:HEV):APIRET;
  1466.                     APIENTRY;             DOSCALLS index 328;
  1467. FUNCTION DosWaitEventSem(ahev:HEV;ulTimeout:ULONG):APIRET;
  1468.                     APIENTRY;             DOSCALLS index 329;
  1469. FUNCTION DosQueryEventSem(ahev:HEV;VAR pulPostCt:ULONG):APIRET;
  1470.                     APIENTRY;             DOSCALLS index 330;
  1471. FUNCTION DosCreateMutexSem(pszName:CSTRING;VAR aphmtx:HMTX;flAttr:ULONG;
  1472.                            fState:BOOL):APIRET;
  1473.                     APIENTRY;             DOSCALLS index 331;
  1474. FUNCTION DosOpenMutexSem (pszName:CSTRING;VAR phmtx:HMTX):APIRET;
  1475.                     APIENTRY;             DOSCALLS index 332;
  1476. FUNCTION DosCloseMutexSem (ahmtx:HMTX):APIRET;
  1477.                     APIENTRY;             DOSCALLS index 333;
  1478. FUNCTION DosRequestMutexSem(ahmtx:HMTX;ulTimeout:ULONG):APIRET;
  1479.                     APIENTRY;             DOSCALLS index 334;
  1480. FUNCTION DosReleaseMutexSem(ahmtx:HMTX):APIRET;
  1481.                     APIENTRY;             DOSCALLS index 335;
  1482. FUNCTION DosQueryMutexSem(ahmtx:HMTX;VAR appid:PID;VAR aptid:TID;
  1483.                           VAR pulCount:ULONG):APIRET;
  1484.                     APIENTRY;             DOSCALLS index 336;
  1485. FUNCTION DosCreateMuxWaitSem(VAR pszName:CSTRING;VAR aphmux:HMUX;cSemRec:ULONG;
  1486.                              VAR pSemRec;flAttr:ULONG):APIRET;
  1487.                     APIENTRY;             DOSCALLS index 337;
  1488. FUNCTION DosOpenMuxWaitSem(VAR pszName:CSTRING;VAR aphmux:HMUX):APIRET;
  1489.                     APIENTRY;             DOSCALLS index 338;
  1490. FUNCTION DosCloseMuxWaitSem(ahmux:HMUX):APIRET;
  1491.                     APIENTRY;             DOSCALLS index 339;
  1492. FUNCTION DosWaitMuxWaitSem(ahmux:HMUX;ulTimeout:ULONG;
  1493.                            VAR pulUser:ULONG):APIRET;
  1494.                     APIENTRY;             DOSCALLS index 340;
  1495. FUNCTION DosAddMuxWaitSem(ahmux:HMUX;VAR pSemRec:SEMRECORD):APIRET;
  1496.                     APIENTRY;             DOSCALLS index 341;
  1497. FUNCTION DosDeleteMuxWaitSem(ahmux:HMUX;ahSem:HSEM):APIRET;
  1498.                     APIENTRY;             DOSCALLS index 342;
  1499. FUNCTION DosQueryMuxWaitSem(ahmux:HMUX;VAR pcSemRec:ULONG;
  1500.                             VAR pSemRec:SEMRECORD;
  1501.                             VAR pflAttr:ULONG):APIRET;
  1502.                     APIENTRY;             DOSCALLS index 343;
  1503. FUNCTION DosGetDateTime(VAR pdt:DATETIME):APIRET;
  1504.                     APIENTRY;             DOSCALLS index 230;
  1505. FUNCTION DosSetDateTime(VAR pdt:DATETIME):APIRET;
  1506.                     APIENTRY;             DOSCALLS index 292;
  1507. FUNCTION DosAsyncTimer(msec:ULONG;ahsem:HSEM;VAR aphtimer:HTIMER):APIRET;
  1508.                     APIENTRY;             DOSCALLS index 350;
  1509. FUNCTION DosStartTimer(msec:ULONG;ahsem:HSEM;VAR aphtimer:HTIMER):APIRET;
  1510.                     APIENTRY;             DOSCALLS index 351;
  1511. FUNCTION DosStopTimer(ahtimer:HTIMER):APIRET;
  1512.                     APIENTRY;             DOSCALLS index 290;
  1513. FUNCTION DosLoadModule(pszName:CSTRING;cbName:ULONG;pszModname:CSTRING;
  1514.                        VAR phmod:HMODULE):APIRET;
  1515.                     APIENTRY;             DOSCALLS index 318;
  1516. FUNCTION DosFreeModule(hmod:HMODULE):APIRET;
  1517.                     APIENTRY;             DOSCALLS index 322;
  1518. FUNCTION DosQueryProcAddr(hmod:HMODULE;ordinal:ULONG;VAR pszName:CSTRING;
  1519.                           VAR ppfn:POINTER):APIRET;
  1520.                     APIENTRY;             DOSCALLS index 321;
  1521. FUNCTION DosQueryModuleHandle(VAR pszModname:CSTRING;VAR phmod:HMODULE):APIRET;
  1522.                     APIENTRY;             DOSCALLS index 319;
  1523. FUNCTION DosQueryModuleName(hmod:HMODULE;cbName:ULONG;VAR apch):APIRET;
  1524.                     APIENTRY;             DOSCALLS index 320;
  1525. FUNCTION DosQueryProcType(hmod:HMODULE;ordinal:ULONG;VAR pszName:CSTRING;
  1526.                           VAR pulproctype:ULONG):APIRET;
  1527.                     APIENTRY;             DOSCALLS index 586;
  1528. FUNCTION DosGetResource(hmod:HMODULE;idType,idName:ULONG;
  1529.                         VAR ppb:POINTER):APIRET;
  1530.                     APIENTRY;             DOSCALLS index 352;
  1531. FUNCTION DosFreeResource(pb:POINTER):APIRET;
  1532.                     APIENTRY;             DOSCALLS index 353;
  1533. FUNCTION DosQueryResourceSize(hmod:HMODULE;idt,idn:ULONG;
  1534.                               VAR pulsize:ULONG):APIRET;
  1535.                     APIENTRY;             DOSCALLS index 572;
  1536. FUNCTION DosQueryCtryInfo(cb:ULONG;VAR pcc:COUNTRYCODE;VAR pci:COUNTRYINFO;
  1537.                           VAR pcbActual:ULONG):APIRET;
  1538.                     APIENTRY;             NLS index 5;
  1539. FUNCTION DosQueryDBCSEnv(cb:ULONG;VAR pcc:COUNTRYCODE;
  1540.                          VAR pBuf):APIRET;
  1541.                     APIENTRY;             NLS index 6;
  1542. FUNCTION DosMapCase(cb:ULONG;VAR pcc:COUNTRYCODE;VAR apch):APIRET;
  1543.                     APIENTRY;             NLS index 7;
  1544. FUNCTION DosQueryCollate(cb:ULONG;VAR pcc:COUNTRYCODE;
  1545.                          VAR apch;VAR pcch:ULONG):APIRET;
  1546.                     APIENTRY;             NLS index 8;
  1547. FUNCTION DosQueryCp(cb:ULONG;VAR arCP,pcCP:ULONG):APIRET;
  1548.                     APIENTRY;             DOSCALLS index 291;
  1549. FUNCTION DosSetProcessCp(cp:ULONG):APIRET;
  1550.                     APIENTRY;             DOSCALLS index 289;
  1551. FUNCTION DosSetExceptionHandler(VAR PERegrec:EXCEPTIONREGISTRATIONRECORD):APIRET;
  1552.                     APIENTRY;             DOSCALLS index 354;
  1553. FUNCTION DosUnsetExceptionHandler(VAR PERegRec:EXCEPTIONREGISTRATIONRECORD):APIRET;
  1554.                     APIENTRY;             DOSCALLS index 355;
  1555. FUNCTION DosRaiseException(VAR Pexcept:EXCEPTIONREPORTRECORD):APIRET;
  1556.                     APIENTRY;             DOSCALLS index 356;
  1557. FUNCTION DosSendSignalException(apid:PID;exception:ULONG):APIRET;
  1558.                     APIENTRY;             DOSCALLS index 379;
  1559. FUNCTION DosUnwindException(VAR pHandler:EXCEPTIONREGISTRATIONRECORD;
  1560.                             VAR pTargetIP;
  1561.                             VAR pERepRec:EXCEPTIONREPORTRECORD):APIRET;
  1562.                     APIENTRY;             DOSCALLS index 357;
  1563. FUNCTION DosSetSignalExceptionFocus(flag:BOOL;VAR pulTimes:ULONG):APIRET;
  1564.                     APIENTRY;             DOSCALLS index 378;
  1565. FUNCTION DosEnterMustComplete(VAR pulNesting:ULONG):APIRET;
  1566.                     APIENTRY;             DOSCALLS index 380;
  1567. FUNCTION DosExitMustComplete(VAR pulNesting:ULONG):APIRET;
  1568.                     APIENTRY;             DOSCALLS index 381;
  1569. FUNCTION DosAcknowledgeSignalException(ulSignalNum:ULONG):APIRET;
  1570.                     APIENTRY;             DOSCALLS index 418;
  1571. FUNCTION DosCreatePipe(VAR phfRead,phfWrite:HFILE;cb:ULONG):APIRET;
  1572.                     APIENTRY;             DOSCALLS index 239;
  1573. FUNCTION DosCloseQueue(hq:HQUEUE):APIRET;
  1574.                     APIENTRY;             QUECALLS index 11;
  1575. FUNCTION DosCreateQueue(VAR phq:HQUEUE;priority:ULONG;VAR pszName:CSTRING):APIRET;
  1576.                     APIENTRY;             QUECALLS index 16;
  1577. FUNCTION DosOpenQueue(VAR appid:PID;VAR phq:HQUEUE;VAR pszName:CSTRING):APIRET;
  1578.                     APIENTRY;             QUECALLS index 15;
  1579. FUNCTION DosPeekQueue(hq:HQUEUE;VAR pRequest:REQUESTDATA;VAR pcbData:ULONG;
  1580.                       VAR ppbuf;VAR element:ULONG;nowait:BOOL;
  1581.                       VAR ppriority;hsem:HEV):APIRET;
  1582.                     APIENTRY;             QUECALLS index 13;
  1583. FUNCTION DosPurgeQueue(hq:HQUEUE):APIRET;
  1584.                     APIENTRY;             QUECALLS index 10;
  1585. FUNCTION DosQueryQueue(hq:HQUEUE;VAR pcbEntries:ULONG):APIRET;
  1586.                     APIENTRY;             QUECALLS index 12;
  1587. FUNCTION DosReadQueue(hq:HQUEUE;VAR pRequest:REQUESTDATA;VAR pcbData:ULONG;
  1588.                       VAR ppbuf;element:ULONG;wait:BOOL;
  1589.                       VAR ppriority;hsem:HEV):APIRET;
  1590.                     APIENTRY;             QUECALLS index 9;
  1591. FUNCTION DosWriteQueue(hq:HQUEUE;request,cbData:ULONG;VAR pbData;
  1592.                        priority:ULONG):APIRET;
  1593.                     APIENTRY;             QUECALLS index 14;
  1594. FUNCTION DosErrorAPI(error:ULONG):APIRET;
  1595.                     APIENTRY;             DOSCALLS index 212;
  1596. FUNCTION DosGetMessage(VAR pTable;cTable:ULONG; VAR pBuf;cbBuf,msgnumber:ULONG;
  1597.                        CONST pszFile:CSTRING;VAR pcbMsg:ULONG):APIRET;
  1598.                     APIENTRY;             MSG index 6;
  1599. FUNCTION DosErrClass(code:ULONG;VAR pClass,pAction,pLocus:ULONG):APIRET;
  1600.                     APIENTRY;             DOSCALLS index 211;
  1601. FUNCTION DosInsertMessage(VAR pTable;cTable:ULONG;VAR pszMsg:CSTRING;cbMsg:ULONG;
  1602.                           VAR pBuf;cbBuf:ULONG;VAR pcbMsg:ULONG):APIRET;
  1603.                     APIENTRY;             MSG index 4;
  1604. FUNCTION DosPutMessage(ahfile:HFILE;cbMsg:ULONG;VAR pBuf):APIRET;
  1605.                     APIENTRY;             MSG index 5;
  1606. FUNCTION DosQuerySysInfo(iStart,iLast:ULONG;VAR pBuf;cbBuf:ULONG):APIRET;
  1607.                     APIENTRY;             DOSCALLS index 348;
  1608. FUNCTION DosScanEnv(VAR pszName:CSTRING;VAR ppszValue:PCHAR):APIRET;
  1609.                     APIENTRY;             DOSCALLS index 227;
  1610. FUNCTION DosSearchPath(flag:ULONG;VAR pszPathOrName,pszFilename:CSTRING;
  1611.                        VAR pBuf;cbBuf:ULONG):APIRET;
  1612.                     APIENTRY;             DOSCALLS index 228;
  1613. FUNCTION DosQueryMessageCP(VAR pb;cb:ULONG;VAR pszFilename:CSTRING;
  1614.                            VAR cbBuf:ULONG):APIRET;
  1615.                     APIENTRY;             MSG index 8;
  1616. FUNCTION DosQueryRASInfo(index:ULONG;VAR Addr:POINTER):APIRET;
  1617.                     APIENTRY;             DOSCALLS index 112;
  1618. FUNCTION DosStartSession(VAR psd:STARTDATA;VAR pidSession:ULONG;
  1619.                          VAR appid:PID):APIRET;
  1620.                     APIENTRY;             SESMGR index 37;
  1621. FUNCTION DosSetSession(idSession:ULONG;VAR psd:STATUSDATA):APIRET;
  1622.                     APIENTRY;             SESMGR index 39;
  1623. FUNCTION DosSelectSession(idSession:ULONG):APIRET;
  1624.                     APIENTRY;             SESMGR index 38;
  1625. FUNCTION DosStopSession(scope,idSession:ULONG):APIRET;
  1626.                     APIENTRY;             SESMGR index 40;
  1627. FUNCTION DosQueryAppType(CONST pszName:CSTRING;VAR pFlags:ULONG):APIRET;
  1628.                     APIENTRY;             DOSCALLS index 323;
  1629. FUNCTION DosDevConfig(VAR pdevinfo;item:ULONG):APIRET;
  1630.                     APIENTRY;             DOSCALLS index 231;
  1631. FUNCTION DosDevIOCtl(hDevice:HFILE;category,afunction:ULONG;
  1632.                      VAR pParams;cbParmLenMax:ULONG;VAR pcbParmLen:ULONG;
  1633.                      VAR pData;cbDataLenMax:ULONG;VAR pcbDataLen:ULONG):APIRET;
  1634.                     APIENTRY;             DOSCALLS index 284;
  1635. FUNCTION DosPhysicalDisk(afunction:ULONG;VAR pBuf;cbBuf:ULONG;
  1636.                          VAR pParams;cbParams:ULONG):APIRET;
  1637.                     APIENTRY;             DOSCALLS index 287;
  1638. FUNCTION DosCallNPipe(VAR pszName:CSTRING;VAR pInbuf;cbIn:ULONG;VAR pOutbuf;
  1639.                       cbOut:ULONG;VAR pcbActual:ULONG;msec:ULONG):APIRET;
  1640.                     APIENTRY;             DOSCALLS index 240;
  1641. FUNCTION DosConnectNPipe(ahpipe:HPIPE):APIRET;
  1642.                     APIENTRY;             DOSCALLS index 241;
  1643. FUNCTION DosDisConnectNPipe(ahpipe:HPIPE):APIRET;
  1644.                     APIENTRY;             DOSCALLS index 242;
  1645. FUNCTION DosCreateNPipe(VAR pszName:CSTRING;VAR apHpipe:HPIPE;openmode,pipemode,
  1646.                         cbInbuf,cbOutbuf,msec:ULONG):APIRET;
  1647.                     APIENTRY;             DOSCALLS index 243;
  1648. FUNCTION DosPeekNPipe(ahpipe:HPIPE;VAR pBuf;cbBuf:ULONG;VAR pcbActual:ULONG;
  1649.                       VAR pAvail:AVAILDATA;VAR pState:ULONG):APIRET;
  1650.                     APIENTRY;             DOSCALLS index 244;
  1651. FUNCTION DosQueryNPHState(ahpipe:HPIPE;VAR pState:ULONG):APIRET;
  1652.                     APIENTRY;             DOSCALLS index 245;
  1653. FUNCTION DosQueryNPipeInfo(ahpipe:HPIPE;infolevel:ULONG;VAR pBuf;
  1654.                            cbBuf:ULONG):APIRET;
  1655.                     APIENTRY;             DOSCALLS index 248;
  1656. FUNCTION DosQueryNPipeSemState(ahsem:HSEM;VAR pnpss:PIPESEMSTATE;
  1657.                                cbBuf:ULONG):APIRET;
  1658.                     APIENTRY;             DOSCALLS index 249;
  1659. FUNCTION DosRawReadNPipe(VAR pszName:CSTRING;cb:ULONG;VAR pLen:ULONG;
  1660.                          VAR pBuf):APIRET;
  1661.                     APIENTRY;             DOSCALLS index 246;
  1662. FUNCTION DosRawWriteNPipe(VAR pszName:CSTRING;cb:ULONG):APIRET;
  1663.                     APIENTRY;             DOSCALLS index 247;
  1664. FUNCTION DosSetNPHState(ahpipe:HPIPE;state:ULONG):APIRET;
  1665.                     APIENTRY;             DOSCALLS index 250;
  1666. FUNCTION DosSetNPipeSem(ahpipe:HPIPE;ahsem:HSEM;key:ULONG):APIRET;
  1667.                     APIENTRY;             DOSCALLS index 251;
  1668. FUNCTION DosTransactNPipe(ahpipe:HPIPE;VAR pOutbuf;cbOut:ULONG;
  1669.                           VAR pInbuf;cbIn:ULONG;VAR pcbRead:ULONG):APIRET;
  1670.                     APIENTRY;             DOSCALLS index 252;
  1671. FUNCTION DosWaitNPipe(VAR pszName:CSTRING;msec:ULONG):APIRET;
  1672.                     APIENTRY;             DOSCALLS index 253;
  1673. FUNCTION DosTmrQueryFreq(VAR pulTmrFreq:ULONG):APIRET;
  1674.                     APIENTRY;             DOSCALLS index 362;
  1675. FUNCTION DosTmrQueryTime(VAR pqwTmrTime):APIRET;
  1676.                     APIENTRY;             DOSCALLS index 363;
  1677. FUNCTION DosRegisterPerfCtrs(VAR pbDataBlk;VAR pbTextBlk;
  1678.                              flFlags:ULONG):APIRET;
  1679.                     APIENTRY;             DOSCALLS index 367;
  1680. FUNCTION DosOpenVDD(VAR pszVDD:CSTRING;VAR aphvdd:HVDD):APIRET;
  1681.                     APIENTRY;             DOSCALLS index 308;
  1682. FUNCTION DosRequestVDD(ahvdd:HVDD;asgid:SGID;cmd,cbInput:ULONG;VAR pInput;
  1683.                        cbOutput:ULONG;VAR pOutput):APIRET;
  1684.                     APIENTRY;             DOSCALLS index 309;
  1685. FUNCTION DosCloseVDD(ahvdd:HVDD):APIRET;
  1686.                     APIENTRY;             DOSCALLS index 310;
  1687. FUNCTION DosQueryDOSProperty(asgid:SGID;VAR pszName:CSTRING;cb:ULONG;VAR apch):APIRET;
  1688.                     APIENTRY;             DOSCALLS index 373;
  1689. FUNCTION DosSetDOSProperty(asgid:SGID;VAR pszName:CSTRING;cb:ULONG;pch:CSTRING):APIRET;
  1690.                     APIENTRY;             DOSCALLS index 374;
  1691.  
  1692. END; {IMPORTS}
  1693.  
  1694.  
  1695. IMPLEMENTATION
  1696.  
  1697.  
  1698. BEGIN
  1699. END.
  1700.