home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / dosfilem.def < prev    next >
Text File  |  1995-08-08  |  40KB  |  1,124 lines

  1. DEFINITION MODULE DOSFILEMGR;
  2.  
  3. (************************************************************************
  4.   OS/2 2.1 File Manager Interface.
  5.            01.06.95 14.24 : DosFindNext() changed
  6.            08.08.95 12.02 : DosCreateDir() changed
  7.  
  8.   Copyright (c) 1992,1994 by Juergen Neuhoff
  9. *************************************************************************)
  10.  
  11. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  12. (*$CDECL+    C-style procedures                                         *)
  13. (*$A         default alignment for record fields                        *)
  14.  
  15. IMPORT SYSTEM;
  16. FROM   OS2DEF IMPORT APIRET, LHANDLE, CCHMAXPATHCOMP, TYPEPREFIX, BOOL32;
  17. FROM   OS2DEF IMPORT FHLOCK;
  18.  
  19. CONST
  20.   STDIN          = 0;
  21.   STDOUT         = 1;
  22.   STDERR         = 2;
  23.  
  24. CONST (* DosSetFilePtr() file position codes *)
  25.   FILE_BEGIN      = 0000H; (* Move relative to beginning of file *)
  26.   FILE_CURRENT    = 0001H; (* Move relative to current fptr position *)
  27.   FILE_END        = 0002H; (* Move relative to end of file *)
  28.  
  29. CONST (* DosFindFirst/Next Directory handle types *)
  30.   HDIR_SYSTEM     =  1;    (* Use system handle (1) *)
  31.   HDIR_CREATE     = -1;    (* Allocate a new, unused handle *)
  32.  
  33. CONST (* DosCopy control bits; may be or'ed together *)
  34.   DCPY_EXISTING   = 0001H; (* Copy even if target exists *)
  35.   DCPY_APPEND     = 0002H; (* Append to existing file, do not replace *)
  36.   DCPY_FAILEAS    = 0004H; (* Fail if EAs not supported on target*)
  37.  
  38. CONST (* DosOpen/DosQFHandState/DosQueryFileInfo et al file attributes;
  39.          also known as Dos File Mode bits...
  40.       *)
  41.   FILE_NORMAL     = 0000H;
  42.   FILE_READONLY   = 0001H;
  43.   FILE_HIDDEN     = 0002H;
  44.   FILE_SYSTEM     = 0004H;
  45.   FILE_DIRECTORY  = 0010H;
  46.   FILE_ARCHIVED   = 0020H;
  47.  
  48.   FILE_IGNORE     = 10000H;   (* ignore file attribute in *)
  49.                               (* DosSetPath/File Info if *)
  50.                               (* this bit is set*)
  51.  
  52.   MUST_HAVE_READONLY    = ( (FILE_READONLY  SHL 8) OR FILE_READONLY  );
  53.   MUST_HAVE_HIDDEN      = ( (FILE_HIDDEN    SHL 8) OR FILE_HIDDEN    );
  54.   MUST_HAVE_SYSTEM      = ( (FILE_SYSTEM    SHL 8) OR FILE_SYSTEM    );
  55.   MUST_HAVE_DIRECTORY   = ( (FILE_DIRECTORY SHL 8) OR FILE_DIRECTORY );
  56.   MUST_HAVE_ARCHIVED    = ( (FILE_ARCHIVED  SHL 8) OR FILE_ARCHIVED  );
  57.  
  58. CONST (* DosOpen() actions *)
  59.   FILE_EXISTED    = 0001H;
  60.   FILE_CREATED    = 0002H;
  61.   FILE_TRUNCATED  = 0003H;
  62.  
  63. CONST (* DosOpen() open flags *)
  64.   FILE_OPEN       = 0001H;
  65.   FILE_TRUNCATE   = 0002H;
  66.   FILE_CREATE     = 0010H;
  67.  
  68.   (*         this nibble applies if file already exists    xxxx *)
  69.   OPEN_ACTION_FAIL_IF_EXISTS   = 0000H;  (* ---- ---- ---- 0000 *)
  70.   OPEN_ACTION_OPEN_IF_EXISTS   = 0001H;  (* ---- ---- ---- 0001 *)
  71.   OPEN_ACTION_REPLACE_IF_EXISTS= 0002H;  (* ---- ---- ---- 0010 *)
  72.  
  73.   (*      this nibble applies if file does not exist  xxxx      *)
  74.   OPEN_ACTION_FAIL_IF_NEW      = 0000H;  (* ---- ---- 0000 ---- *)
  75.   OPEN_ACTION_CREATE_IF_NEW    = 0010H;  (* ---- ---- 0001 ---- *)
  76.  
  77. CONST (* DosOpen/DosSetFHandState flags *)
  78.   OPEN_ACCESS_READONLY        =  0000H;  (* ---- ---- ---- -000 *)
  79.   OPEN_ACCESS_WRITEONLY       =  0001H;  (* ---- ---- ---- -001 *)
  80.   OPEN_ACCESS_READWRITE       =  0002H;  (* ---- ---- ---- -010 *)
  81.   OPEN_SHARE_DENYREADWRITE    =  0010H;  (* ---- ---- -001 ---- *)
  82.   OPEN_SHARE_DENYWRITE        =  0020H;  (* ---- ---- -010 ---- *)
  83.   OPEN_SHARE_DENYREAD         =  0030H;  (* ---- ---- -011 ---- *)
  84.   OPEN_SHARE_DENYNONE         =  0040H;  (* ---- ---- -100 ---- *)
  85.   OPEN_FLAGS_NOINHERIT        =  0080H;  (* ---- ---- 1--- ---- *)
  86.   OPEN_FLAGS_NO_LOCALITY      =  0000H;  (* ---- -000 ---- ---- *)
  87.   OPEN_FLAGS_SEQUENTIAL       =  0100H;  (* ---- -001 ---- ---- *)
  88.   OPEN_FLAGS_RANDOM           =  0200H;  (* ---- -010 ---- ---- *)
  89.   OPEN_FLAGS_RANDOMSEQUENTIAL =  0300H;  (* ---- -011 ---- ---- *)
  90.   OPEN_FLAGS_NO_CACHE         =  1000H;  (* ---1 ---- ---- ---- *)
  91.   OPEN_FLAGS_FAIL_ON_ERROR    =  2000H;  (* --1- ---- ---- ---- *)
  92.   OPEN_FLAGS_WRITE_THROUGH    =  4000H;  (* -1-- ---- ---- ---- *)
  93.   OPEN_FLAGS_DASD             =  8000H;  (* 1--- ---- ---- ---- *)
  94.   OPEN_FLAGS_NONSPOOLED       = 40000H;
  95.  
  96.  
  97. (*
  98.   EA Info Levels & Find First/Next
  99.   =========================================
  100.   API's: DosFindFirst, DosQueryFileInfo, DosQueryPathInfo, DosSetFileInfo,
  101.          DosSetPathInfo
  102. *)
  103.  
  104. CONST (* File info levels&gml All listed API's *)
  105.   FIL_STANDARD        = 1;    (* Info level 1, standard file info *)
  106.   FIL_QUERYEASIZE     = 2;    (* Level 2, return Full EA size *)
  107.   FIL_QUERYEASFROMLIST= 3;    (* Level 3, return requested EA's *)
  108.  
  109. CONST (* File info levels: Dos...PathInfo only *)
  110.   FIL_QUERYFULLNAME   = 5;    (* Level 5, return fully qualified
  111.                                            name of file *)
  112.  
  113.  
  114. CONST (* DosFsAttach() OpFlag *)
  115.   FS_ATTACH           = 0;    (* Attach file server *)
  116.   FS_DETACH           = 1;    (* Detach file server *)
  117.   FS_SPOOLATTACH      = 2;    (* Register a spooler device *)
  118.   FS_SPOOLDETACH      = 3;    (* De-register a spooler device *)
  119.  
  120.  
  121. CONST (* DosFsCtl() RouteMethod *)
  122.   FSCTL_HANDLE        = 1;    (* File Handle directs req routing *)
  123.   FSCTL_PATHNAME      = 2;    (* Path Name directs req routing *)
  124.   FSCTL_FSDNAME       = 3;    (* FSD Name directs req routing *)
  125.  
  126. CONST (* DosFSCtl() FunctionCode *)
  127.   FSCTL_ERROR_INFO    = 1;    (* return error info from FSD *)
  128.   FSCTL_MAX_EASIZE    = 2;    (* Max ea size for the FSD *)
  129.  
  130. TYPE (* structure for FSCTL fn 2 - maximum extende attribute size *)
  131.   EASIZEBUF           = RECORD
  132.     CASE                : TYPEPREFIX OF
  133.     | FALSE             :
  134.       cbMaxEASize       : CARDINAL; (* max. size of one EA *)
  135.       cbMaxEAListSize   : LONGCARD; (* max size of the full EA List *)
  136.     | TRUE              :
  137.       MaxEASize         : CARDINAL; (* max. size of one EA *)
  138.       MaxEAListSize     : LONGCARD; (* max size of the full EA List *)
  139.     END;                END;
  140.   PEASIZEBUF          = POINTER TO EASIZEBUF;
  141.  
  142.  
  143. CONST (* DosQueryFSAttach() *)
  144.       (* Information level types (defines method of query) *)
  145.   FSAIL_QUERYNAME     = 1;    (* Return data for a Drive or Device *)
  146.   FSAIL_DEVNUMBER     = 2;    (* Return data for Ordinal Device # *)
  147.   FSAIL_DRVNUMBER     = 3;    (* Return data for Ordinal Drive # *)
  148.  
  149. CONST (* Item types (from data structure item "Type") *)
  150.   FSAT_CHARDEV        = 1;    (* Resident character device *)
  151.   FSAT_PSEUDODEV      = 2;    (* Pusedu-character device *)
  152.   FSAT_LOCALDRV       = 3;    (* Local drive *)
  153.   FSAT_REMOTEDRV      = 4;    (* Remote drive attached to FSD *)
  154.  
  155. TYPE (* fsqbuf Data structure for QFSAttach*)
  156.   FSQBUFFER    = RECORD
  157.     CASE         : TYPEPREFIX OF
  158.     | FALSE      :
  159.       Type       : CARDINAL;             (* Item type *)
  160.       NameLen    : CARDINAL;             (* Length of item name, sans NULL *)
  161.       Name       : ARRAY [0..0] OF CHAR; (* ASCIIZ item name *)
  162.       FSDNameLen : CARDINAL;             (* Length of FSD name, sans NULL *)
  163.       FSDName    : ARRAY [0..0] OF CHAR; (* ASCIIZ FSD name *)
  164.       FSADataLen : CARDINAL;             (* Len of FSD Attach data returned *)
  165.       FSAData    : ARRAY [0..0] OF CHAR; (* FSD Attach data from FSD *)
  166.     | TRUE       :
  167.       iType      : CARDINAL;             (* Item type *)
  168.       cbName     : CARDINAL;             (* Length of item name, sans NULL *)
  169.       szName     : ARRAY [0..0] OF CHAR; (* ASCIIZ item name *)
  170.       cbFSDName  : CARDINAL;             (* Length of FSD name, sans NULL *)
  171.       szFSDName  : ARRAY [0..0] OF CHAR; (* ASCIIZ FSD name *)
  172.       cbFSAData  : CARDINAL;             (* Len of FSD Attach data returned *)
  173.       rgFSAData  : ARRAY [0..0] OF CHAR; (* FSD Attach data from FSD *)
  174.     END;         END;
  175.   PFSQBUFFER   = POINTER TO FSQBUFFER;
  176.  
  177. TYPE (* fsqbuf Data structure for QFSAttach*)
  178.   FSQBUFFER2   = RECORD
  179.     CASE         : TYPEPREFIX OF
  180.     | FALSE      :
  181.       Type       : CARDINAL;
  182.       NameLen    : CARDINAL;
  183.       FSDNameLen : CARDINAL;
  184.       FSADataLen : CARDINAL;
  185.       Name       : ARRAY [0..0] OF CHAR;
  186.       FSDName    : ARRAY [0..0] OF CHAR;
  187.       FSAData    : ARRAY [0..0] OF CHAR;
  188.     | TRUE       :
  189.       iType      : CARDINAL;
  190.       cbName     : CARDINAL;
  191.       cbFSDName  : CARDINAL;
  192.       cbFSAData  : CARDINAL;
  193.       szName     : ARRAY [0..0] OF CHAR;
  194.       szFSDName  : ARRAY [0..0] OF CHAR;
  195.       rgFSAData  : ARRAY [0..0] OF CHAR;
  196.     END;         END;
  197.   PFSQBUFFER2  = POINTER TO PFSQBUFFER2;
  198.  
  199. TYPE (* Data structure for spooler operations *)
  200.   SPOOLATTACH  = RECORD
  201.     CASE         : TYPEPREFIX OF
  202.     | FALSE      :
  203.       NmPipe     : CARDINAL;    (* Named pipe handle *)
  204.       Key        : LONGCARD;    (* Attached key *)
  205.     | TRUE       :
  206.       hNmPipe    : CARDINAL;    (* Named pipe handle *)
  207.       ulKey      : LONGCARD;    (* Attached key *)
  208.     END;         END;
  209.   PSPOOLATTACH = POINTER TO SPOOLATTACH;
  210.  
  211. TYPE (* Spool attach data buffer *)
  212.   SPOOLATTACH2  = RECORD
  213.     CASE          : TYPEPREFIX OF
  214.     | FALSE       :
  215.       NmPipe      : CARDINAL;     (* handle if named pipe opened by spooler *)
  216.       Filler      : CARDINAL;
  217.       SpoolObjLen : SHORTCARD;    (* length of name of spooler object *)
  218.       SpoolObj    : ARRAY [0..0] OF CHAR; (* var.len. name of spooler object *)
  219.     | TRUE        :
  220.       hNmPipe     : CARDINAL;     (* handle if named pipe opened by spooler *)
  221.       filler      : CARDINAL;
  222.       cbSpoolObj  : SHORTCARD;    (* length of name of spooler object *)
  223.       szSpoolObj  : ARRAY [0..0] OF CHAR; (* var.len. name of spooler object *)
  224.     END;          END;
  225.   PSPOOLATTACH2 = POINTER TO SPOOLATTACH2;
  226.  
  227. CONST (* File System Drive Info Levels for DosQueryFSInfo() DosSetFSInfo() *)
  228.   FSIL_ALLOC          = 1;    (* Drive allocation info (Query only) *)
  229.   FSIL_VOLSER         = 2;    (* Drive Volum/Serial info *)
  230.  
  231. CONST (* DosQueryFHType() *)
  232.       (* Handle classes (low 8 bits of Handle Type) *)
  233.   FHT_DISKFILE        = 0000H;   (* Disk file handle *)
  234.   FHT_CHRDEV          = 0001H;   (* Character device handle *)
  235.   FHT_PIPE            = 0002H;   (* Pipe handle *)
  236.       (* Handle bits (high 8 bits of Handle Type) *)
  237.   FHB_DSKREMOTE       = 8000H;   (* Remote disk *)
  238.   FHB_CHRDEVREMOTE    = 8000H;   (* Remote character device *)
  239.   FHB_PIPEREMOTE      = 8000H;   (* Remote pipe *)
  240.  
  241. TYPE (* File time and date types *)
  242.   FTIME   = CARDINAL;            (* hhhh hmmm mmms ssss *)
  243.   PFTIME  = POINTER TO FTIME;
  244.   FDATE   = CARDINAL;            (* yyyy yyym mmmd dddd *)
  245.   PFDATE  = POINTER TO FDATE;
  246.  
  247. TYPE
  248.   VOLUMELABEL  = RECORD           (* Volume label record *)
  249.     CASE         : TYPEPREFIX OF
  250.     | FALSE      :
  251.       LabelLen   : SHORTCARD;        (* length of label sans NULL *)
  252.       Label      : ARRAY [0..11] OF CHAR;
  253.     | TRUE       :
  254.       cch        : SHORTCARD;        (* length of label sans NULL *)
  255.       szVolLabel : ARRAY [0..11] OF CHAR;
  256.     END;         END;
  257.   PVOLUMELABEL = POINTER TO PVOLUMELABEL;
  258.  
  259. TYPE
  260.   FSINFO          = RECORD         (* file system info record *)
  261.     CASE            : TYPEPREFIX OF
  262.     | FALSE         :
  263.       CreationDate  : FDATE;       (* file creation date *)
  264.       CreationTime  : FTIME;       (* file creation time *)
  265.       Vol           : VOLUMELABEL; (* volume label name *)
  266.     | TRUE          :
  267.       fdateCreation : FDATE;       (* file creation date *)
  268.       ftimeCreation : FTIME;       (* file creation time *)
  269.       vol           : VOLUMELABEL; (* volume label name *)
  270.     END;            END;
  271.   PFSINFO         = POINTER TO FSINFO;
  272.  
  273. CONST (* HANDTYPE values *)
  274.   HANDTYPE_FILE       = 0000H;
  275.   HANDTYPE_DEVICE     = 0001H;
  276.   HANDTYPE_PIPE       = 0002H;
  277.   HANDTYPE_NETWORK    = 8000H;
  278.  
  279. TYPE
  280.   FILELOCK  = RECORD
  281.     CASE      : TYPEPREFIX OF
  282.     | FALSE   :
  283.       Offset  : LONGINT;
  284.       Range   : LONGINT;
  285.     | TRUE    :
  286.       lOffset : LONGINT;
  287.       lRange  : LONGINT;
  288.     END;      END;
  289.   PFILELOCK = POINTER TO FILELOCK;
  290.   HFILE     = LHANDLE;
  291.   PHFILE    = POINTER TO HFILE;
  292.   HEV       = LONGCARD;
  293.   PHEV      = POINTER TO HEV;
  294.  
  295. TYPE (* buffer types for DosFindFirst() DosFindNext() ... *)
  296.   FILEFINDBUF        = RECORD
  297.     CASE               : TYPEPREFIX OF
  298.     | FALSE            :
  299.       CreationDate     : FDATE;
  300.       CreationTime     : FTIME;
  301.       LastAccessDate   : FDATE;
  302.       LastAccessTime   : FTIME;
  303.       LastWriteDate    : FDATE;
  304.       LastWriteTime    : FTIME;
  305.       FileSize         : LONGCARD;
  306.       FileAllocSize    : LONGCARD;
  307.       FileAttr         : CARDINAL;
  308.       NameLen          : SHORTCARD;
  309.       Name             : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  310.     | TRUE             :
  311.       fdateCreation    : FDATE;
  312.       ftimeCreation    : FTIME;
  313.       fdateLastAccess  : FDATE;
  314.       ftimeLastAccess  : FTIME;
  315.       fdateLastWrite   : FDATE;
  316.       ftimeLastWrite   : FTIME;
  317.       cbFile           : LONGCARD;
  318.       cbFileAlloc      : LONGCARD;
  319.       attrFile         : CARDINAL;
  320.       cchName          : SHORTCARD;
  321.       achName          : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  322.     END;
  323.     filler             : SYSTEM.BYTE;
  324.                        END;
  325.   PFILEFINDBUF       = POINTER TO FILEFINDBUF;
  326.   (*$A2 WORD alignment for record fields >= 2 bytes *)
  327.   FILEFINDBUF2       = RECORD
  328.     CASE               : TYPEPREFIX OF
  329.     | FALSE            :
  330.       CreationDate     : FDATE;
  331.       CreationTime     : FTIME;
  332.       LastAccessDate   : FDATE;
  333.       LastAccessTime   : FTIME;
  334.       LastWriteDate    : FDATE;
  335.       LastWriteTime    : FTIME;
  336.       FileSize         : LONGCARD;
  337.       FileAllocSize    : LONGCARD;
  338.       FileAttr         : CARDINAL;
  339.       ListSize         : LONGCARD;
  340.       NameLen          : SHORTCARD;
  341.       Name             : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  342.     | TRUE             :
  343.       fdateCreation    : FDATE;
  344.       ftimeCreation    : FTIME;
  345.       fdateLastAccess  : FDATE;
  346.       ftimeLastAccess  : FTIME;
  347.       fdateLastWrite   : FDATE;
  348.       ftimeLastWrite   : FTIME;
  349.       cbFile           : LONGCARD;
  350.       cbFileAlloc      : LONGCARD;
  351.       attrFile         : CARDINAL;
  352.       cbList           : LONGCARD;
  353.       cchName          : SHORTCARD;
  354.       achName          : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  355.     END;
  356.     filler             : SYSTEM.BYTE;
  357.                        END;
  358.   (*$A default alignment for record fields *)
  359.   PFILEFINDBUF2      = POINTER TO FILEFINDBUF2;
  360.   FILEFINDBUF3       = RECORD
  361.     CASE               : TYPEPREFIX OF
  362.     | FALSE            :
  363.       NextEntryOffset  : LONGCARD;
  364.       CreationDate     : FDATE;
  365.       CreationTime     : FTIME;
  366.       LastAccessDate   : FDATE;
  367.       LastAccessTime   : FTIME;
  368.       LastWriteDate    : FDATE;
  369.       LastWriteTime    : FTIME;
  370.       FileSize         : LONGCARD;
  371.       FileAllocSize    : LONGCARD;
  372.       FileAttr         : LONGCARD;
  373.       NameLen          : SHORTCARD;
  374.       Name             : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  375.     | TRUE             :
  376.       oNextEntryOffset : LONGCARD;
  377.       fdateCreation    : FDATE;
  378.       ftimeCreation    : FTIME;
  379.       fdateLastAccess  : FDATE;
  380.       ftimeLastAccess  : FTIME;
  381.       fdateLastWrite   : FDATE;
  382.       ftimeLastWrite   : FTIME;
  383.       cbFile           : LONGCARD;
  384.       cbFileAlloc      : LONGCARD;
  385.       attrFile         : LONGCARD;
  386.       cchName          : SHORTCARD;
  387.       achName          : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  388.     END;
  389.     filler             : ARRAY [0..2] OF SYSTEM.BYTE;
  390.                        END;
  391.   PFILEFINDBUF3      = POINTER TO FILEFINDBUF3;
  392.   FILEFINDBUF4       = RECORD
  393.     CASE               : TYPEPREFIX OF
  394.     | FALSE            :
  395.       NextEntryOffset  : LONGCARD;
  396.       CreationDate     : FDATE;
  397.       CreationTime     : FTIME;
  398.       LastAccessDate   : FDATE;
  399.       LastAccessTime   : FTIME;
  400.       LastWriteDate    : FDATE;
  401.       LastWriteTime    : FTIME;
  402.       FileSize         : LONGCARD;
  403.       FileAllocSize    : LONGCARD;
  404.       FileAttr         : LONGCARD;
  405.       ListSize         : LONGCARD;
  406.       NameLen          : SHORTCARD;
  407.       Name             : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  408.     | TRUE             :
  409.       oNextEntryOffset : LONGCARD;
  410.       fdateCreation    : FDATE;
  411.       ftimeCreation    : FTIME;
  412.       fdateLastAccess  : FDATE;
  413.       ftimeLastAccess  : FTIME;
  414.       fdateLastWrite   : FDATE;
  415.       ftimeLastWrite   : FTIME;
  416.       cbFile           : LONGCARD;
  417.       cbFileAlloc      : LONGCARD;
  418.       attrFile         : LONGCARD;
  419.       cbList           : LONGCARD;
  420.       cchName          : SHORTCARD;
  421.       achName          : ARRAY [0..CCHMAXPATHCOMP-1] OF CHAR;
  422.     END;
  423.     filler             : ARRAY [0..2] OF SYSTEM.BYTE;
  424.                       END;
  425.   PFILEFINDBUF4     = POINTER TO FILEFINDBUF4;
  426.  
  427. TYPE (* extended attribute structures *)
  428.   PGEA       = POINTER TO GEA;
  429.   PGEALIST   = POINTER TO GEALIST;
  430.   PFEA       = POINTER TO FEA;
  431.   PFEALIST   = POINTER TO FEALIST;
  432.   PEAOP      = POINTER TO PEAOP;
  433.   PFEA2      = POINTER TO FEA2;
  434.   PFEA2LIST  = POINTER TO FEA2LIST;
  435.   PGEA2      = POINTER TO GEA2;
  436.   PGEA2LIST  = POINTER TO GEA2LIST;
  437.   PEAOP2     = POINTER TO EAOP2;
  438.   GEA        = RECORD
  439.     CASE       : TYPEPREFIX OF
  440.     | FALSE    :
  441.       NameLen  : SHORTCARD;            (* name length not including NULL *)
  442.       Name     : ARRAY [0..0] OF CHAR; (* attribute name *)
  443.     | TRUE     :
  444.       cbName   : SHORTCARD;            (* name length not including NULL *)
  445.       szName   : ARRAY [0..0] OF CHAR; (* attribute name *)
  446.     END;       END;
  447.   GEALIST    = RECORD
  448.     CASE       : TYPEPREFIX OF
  449.     | FALSE    :
  450.       ListSize : LONGCARD;             (* total record bytes incl. full list *)
  451.       List     : ARRAY [0..0] OF GEA;  (* variable length GEA structures *)
  452.     | TRUE     :
  453.       cbList   : LONGCARD;             (* total record bytes incl. full list *)
  454.       list     : ARRAY [0..0] OF GEA;  (* variable length GEA structures *)
  455.     END;       END;
  456.   FEA        = RECORD
  457.     CASE       : TYPEPREFIX OF
  458.     | FALSE    :
  459.       EA       : SHORTCARD;            (* flags *)
  460.       NameLen  : SHORTCARD;            (* name length not including NULL *)
  461.       ValueLen : CARDINAL;             (* value length *)
  462.     | TRUE     :
  463.       fEA      : SHORTCARD;            (* flags *)
  464.       cbName   : SHORTCARD;            (* name length not including NULL *)
  465.       cbValue  : CARDINAL;             (* value length *)
  466.     END;       END;
  467.   FEALIST    = RECORD
  468.     CASE       : TYPEPREFIX OF
  469.     | FALSE    :
  470.       ListSize : LONGCARD;             (* total record bytes incl. full list *)
  471.       List     : ARRAY [0..0] OF FEA;  (* variable length FEA records *)
  472.     | TRUE     :
  473.       cbList   : LONGCARD;             (* total record bytes incl. full list *)
  474.       list     : ARRAY [0..0] OF FEA;  (* variable length FEA records *)
  475.     END;       END;
  476.   EAOP       = RECORD
  477.     CASE       : TYPEPREFIX OF
  478.     | FALSE    :
  479.       GEAList  : PGEALIST; (* general EA list *)
  480.       FEAList  : PFEALIST; (* full EA list *)
  481.       Error    : LONGCARD;
  482.     | TRUE     :
  483.       fpGEAList: PGEALIST; (* general EA list *)
  484.       fpFEAList: PFEALIST; (* full EA list *)
  485.       oError   : LONGCARD;
  486.     END;       END;
  487.   FEA2       = RECORD
  488.     CASE       : TYPEPREFIX OF
  489.     | FALSE    :
  490.       NextEntryOffset : LONGCARD;
  491.       EA       : SHORTCARD;            (* flags *)
  492.       NameLen  : SHORTCARD;            (* name length excl. NULL *)
  493.       ValueLen : CARDINAL;             (* value length *)
  494.       Name     : ARRAY [0..0] OF CHAR;
  495.     | TRUE     :
  496.       oNextEntryOffset : LONGCARD;
  497.       fEA      : SHORTCARD;            (* flags *)
  498.       cbName   : SHORTCARD;            (* name length excl. NULL *)
  499.       cbValue  : CARDINAL;             (* value length *)
  500.       szName   : ARRAY [0..0] OF CHAR;
  501.     END;       END;
  502.   FEA2LIST   = RECORD
  503.     CASE       : TYPEPREFIX OF
  504.     | FALSE    :
  505.       ListSize : LONGCARD;
  506.       List     : ARRAY [0..0] OF FEA2;
  507.     | TRUE     :
  508.       cbList   : LONGCARD;
  509.       list     : ARRAY [0..0] OF FEA2;
  510.     END;       END;
  511.   GEA2       = RECORD
  512.     CASE       : TYPEPREFIX OF
  513.     | FALSE    :
  514.       NextEntryOffset : LONGCARD;
  515.       NameLen  : SHORTCARD;
  516.       Name     : ARRAY [0..0] OF CHAR;
  517.     | TRUE     :
  518.       oNextEntryOffset : LONGCARD;
  519.       cbName   : SHORTCARD;
  520.       szName   : ARRAY [0..0] OF CHAR;
  521.     END;       END;
  522.   GEA2LIST   = RECORD
  523.     CASE       : TYPEPREFIX OF
  524.     | FALSE    :
  525.       ListSize : LONGCARD;
  526.       List     : ARRAY [0..0] OF GEA2;
  527.     | TRUE     :
  528.       cbList   : LONGCARD;
  529.       list     : ARRAY [0..0] OF GEA2;
  530.     END;       END;
  531.   EAOP2      = RECORD
  532.     CASE       : TYPEPREFIX OF
  533.     | FALSE    :
  534.       GEA2List : PGEA2LIST;         (* GEA set *)
  535.       FEA2List : PFEA2LIST;         (* FEA set *)
  536.       Error    : LONGCARD;          (* offset of FEA error *)
  537.     | TRUE     :
  538.       fpGEA2List : PGEA2LIST;       (* GEA set *)
  539.       fpFEA2List : PFEA2LIST;       (* FEA set *)
  540.       oError   : LONGCARD;          (* offset of FEA error *)
  541.     END;       END;
  542.  
  543. CONST (* flags for FEA.EA *)
  544.   FEA_NEEDEA = 80H;                  (* need EA bit *)
  545.  
  546. CONST
  547.   (*
  548.      Equates for the types of EAs that follow the convention that we have
  549.      established.
  550.  
  551.      Values 0xFFFE thru 0x8000 are reserved.
  552.      Values 0x0000 thru 0x7fff are user definable.
  553.      Value  0xFFFC is not used
  554.   *)
  555.   EAT_BINARY   = 0FFFEH;    (* length preceeded binary *)
  556.   EAT_ASCII    = 0FFFDH;    (* length preceeded ASCII *)
  557.   EAT_BITMAP   = 0FFFBH;    (* length preceeded bitmap *)
  558.   EAT_METAFILE = 0FFFAH;    (* length preceeded metafile *)
  559.   EAT_ICON     = 0FFF9H;    (* length preceeded icon *)
  560.   EAT_EA       = 0FFEEH;    (* length preceeded ASCII *)
  561.                             (* name of associated data *)
  562.   EAT_MVMT     = 0FFDFH;    (* multi-valued, multi-typed field *)
  563.   EAT_MVST     = 0FFDEH;    (* multi-valued, single-typed field *)
  564.   EAT_ASN1     = 0FFDDH;    (* ASN.1 field *)
  565.  
  566. TYPE (* File time and date types *)
  567.   FILESTATUS         = RECORD
  568.     CASE               : TYPEPREFIX OF
  569.     | FALSE            :
  570.       CreationDate     : FDATE;
  571.       CreationTime     : FTIME;
  572.       LastAccessDate   : FDATE;
  573.       LastAccessTime   : FTIME;
  574.       LastWriteDate    : FDATE;
  575.       LastWriteTime    : FTIME;
  576.       FileSize         : LONGCARD;
  577.       FileAllocSize    : LONGCARD;
  578.       FileAttr         : CARDINAL;
  579.     | TRUE             :
  580.       fdateCreation    : FDATE;
  581.       ftimeCreation    : FTIME;
  582.       fdateLastAccess  : FDATE;
  583.       ftimeLastAccess  : FTIME;
  584.       fdateLastWrite   : FDATE;
  585.       ftimeLastWrite   : FTIME;
  586.       cbFile           : LONGCARD;
  587.       cbFileAlloc      : LONGCARD;
  588.       attrFile         : CARDINAL;
  589.     END;
  590.     filler             : SYSTEM.WORD;
  591.                        END;
  592.   FILESTATUS2        = RECORD
  593.     CASE               : TYPEPREFIX OF
  594.     | FALSE            :
  595.       CreationDate     : FDATE;
  596.       CreationTime     : FTIME;
  597.       LastAccessDate   : FDATE;
  598.       LastAccessTime   : FTIME;
  599.       LastWriteDate    : FDATE;
  600.       LastWriteTime    : FTIME;
  601.       FileSize         : LONGCARD;
  602.       FileAllocSize    : LONGCARD;
  603.       FileAttr         : CARDINAL;
  604.       Filler           : SYSTEM.WORD;
  605.       ListSize         : LONGCARD;
  606.     | TRUE             :
  607.       fdateCreation    : FDATE;
  608.       ftimeCreation    : FTIME;
  609.       fdateLastAccess  : FDATE;
  610.       ftimeLastAccess  : FTIME;
  611.       fdateLastWrite   : FDATE;
  612.       ftimeLastWrite   : FTIME;
  613.       cbFile           : LONGCARD;
  614.       cbFileAlloc      : LONGCARD;
  615.       attrFile         : CARDINAL;
  616.       filler           : SYSTEM.WORD;
  617.       cbList           : LONGCARD;
  618.     END;               END;
  619.   FILESTATUS3        = RECORD
  620.     CASE               : TYPEPREFIX OF
  621.     | FALSE            :
  622.       CreationDate     : FDATE;
  623.       CreationTime     : FTIME;
  624.       LastAccessDate   : FDATE;
  625.       LastAccessTime   : FTIME;
  626.       LastWriteDate    : FDATE;
  627.       LastWriteTime    : FTIME;
  628.       FileSize         : LONGCARD;
  629.       FileAllocSize    : LONGCARD;
  630.       FileAttr         : LONGCARD;
  631.     | TRUE             :
  632.       fdateCreation    : FDATE;
  633.       ftimeCreation    : FTIME;
  634.       fdateLastAccess  : FDATE;
  635.       ftimeLastAccess  : FTIME;
  636.       fdateLastWrite   : FDATE;
  637.       ftimeLastWrite   : FTIME;
  638.       cbFile           : LONGCARD;
  639.       cbFileAlloc      : LONGCARD;
  640.       attrFile         : LONGCARD;
  641.     END;               END;
  642.   FILESTATUS4        = RECORD (* level 2 info for DosQueryFileInfo() *)
  643.     CASE               : TYPEPREFIX OF
  644.     | FALSE            :
  645.       CreationDate     : FDATE;
  646.       CreationTime     : FTIME;
  647.       LastAccessDate   : FDATE;
  648.       LastAccessTime   : FTIME;
  649.       LastWriteDate    : FDATE;
  650.       LastWriteTime    : FTIME;
  651.       FileSize         : LONGCARD;
  652.       FileAllocSize    : LONGCARD;
  653.       FileAttr         : LONGCARD;
  654.       ListSize         : LONGCARD;
  655.     | TRUE             :
  656.       fdateCreation    : FDATE;
  657.       ftimeCreation    : FTIME;
  658.       fdateLastAccess  : FDATE;
  659.       ftimeLastAccess  : FTIME;
  660.       fdateLastWrite   : FDATE;
  661.       ftimeLastWrite   : FTIME;
  662.       cbFile           : LONGCARD;
  663.       cbFileAlloc      : LONGCARD;
  664.       attrFile         : LONGCARD;
  665.       cbList           : LONGCARD;
  666.     END;               END;
  667.   FSALLOCATE         = RECORD     (* level 1 info for DosQueryFSInfo() *)
  668.     CASE               : TYPEPREFIX OF
  669.     | FALSE            :
  670.       FileSystemId     : LONGCARD;  (* File system ID *)
  671.       SectorsPerUnit   : LONGCARD;  (* Number of sectors per allocation unit *)
  672.       Units            : LONGCARD;  (* Number of allocation units *)
  673.       UnitsAvail       : LONGCARD;  (* Number of available allocation units *)
  674.       SectorSize       : CARDINAL;  (* Number of bytes per sector *)
  675.     | TRUE             :
  676.       idFileSystem     : LONGCARD;  (* File system ID *)
  677.       cSectorUnit      : LONGCARD;  (* Number of sectors per allocation unit *)
  678.       cUnit            : LONGCARD;  (* Number of allocation units *)
  679.       cUnitAvail       : LONGCARD;  (* Number of available allocation units *)
  680.       cbSector         : CARDINAL;  (* Number of bytes per sector *)
  681.     END;
  682.     filler             : SYSTEM.WORD;
  683.                        END;
  684.   PFILESTATUS        = POINTER TO FILESTATUS;
  685.   PFILESTATUS2       = POINTER TO FILESTATUS2;
  686.   PFILESTATUS3       = POINTER TO FILESTATUS3;
  687.   PFSALLOCATE        = POINTER TO FSALLOCATE;
  688.   HDIR               = LHANDLE;
  689.   PHDIR              = POINTER TO HDIR;
  690.  
  691. TYPE
  692.   DENA1 = RECORD                     (* level 1 info DosEnumAttribute() *)
  693.     CASE       : TYPEPREFIX OF
  694.     | FALSE    :
  695.       Reserved : SYSTEM.BYTE;          (* 0 *)
  696.       NameLen  : SHORTCARD;            (* length of name exculding NULL *)
  697.       ValueLen : CARDINAL;             (* length of value *)
  698.       Name     : ARRAY [0..0] OF CHAR; (* variable length asciiz name *)
  699.     | TRUE     :
  700.       reserved : SYSTEM.BYTE;          (* 0 *)
  701.       cbName   : SHORTCARD;            (* length of name exculding NULL *)
  702.       cbValue  : CARDINAL;             (* length of value *)
  703.       szName   : ARRAY [0..0] OF CHAR; (* variable length asciiz name *)
  704.     END;       END;
  705.   PDENA1     = POINTER TO DENA1;
  706.   DENA2      = FEA2;
  707.   PDENA2     = PFEA2;
  708.  
  709. CONST (* Infolevels for DosEnumAttribute()  *)
  710.   ENUMEA_LEVEL_NO_VALUE  = 1;      (* FEA without value *)
  711.  
  712. CONST (* Reference types for DosEnumAttribute() *)
  713.   ENUMEA_REFTYPE_FHANDLE = 0;      (* file handle *)
  714.   ENUMEA_REFTYPE_PATH    = 1;      (* path name *)
  715.   ENUMEA_REFTYPE_MAX     = ENUMEA_REFTYPE_PATH;
  716.  
  717. CONST (* for DosSetPathInfo() PathInfoFlags *)
  718.   DSPI_WRITTHRU    = 00000010H;
  719.  
  720.  
  721. (*************************************************************************
  722.   Directory Search Functions
  723. **************************************************************************)
  724.  
  725. PROCEDURE DosFindFirst
  726. ( FileName          : ARRAY OF CHAR;
  727.   VAR DirHandle     : HDIR;
  728.   Attribute         : LONGCARD;
  729.   VAR ResultBuf     : ARRAY OF SYSTEM.BYTE;
  730.   ResultBufLen      : LONGCARD;
  731.   VAR SearchCount   : LONGCARD;
  732.   FileInfoLevel     : LONGCARD
  733. )                   : APIRET;
  734.  
  735. PROCEDURE DosFindNext
  736. ( DirHandle         : HDIR;
  737.   VAR ResultBuf     : ARRAY OF SYSTEM.BYTE;
  738.   ResultBufLen      : LONGCARD;
  739.   VAR SearchCount   : LONGCARD
  740. )                   : APIRET;
  741.  
  742. PROCEDURE DosFindClose
  743. ( DirHandle         : HDIR
  744. )                   : APIRET;
  745.  
  746.  
  747.  
  748. (*************************************************************************
  749.   File Functions
  750. *************************************************************************)
  751.  
  752. PROCEDURE DosClose
  753. ( FileHandle       : HFILE
  754. )                  : APIRET;
  755.  
  756. PROCEDURE DosProtectClose
  757. ( FileHandle       : HFILE;
  758.   FileHandleLockID : FHLOCK
  759. )                  : APIRET;
  760.  
  761. PROCEDURE DosCopy
  762. ( SourceName       : ARRAY OF CHAR;
  763.   TargetName       : ARRAY OF CHAR;
  764.   OpMode           : LONGCARD
  765. )                  : APIRET;
  766.  
  767. PROCEDURE DosDelete
  768. ( FileName         : ARRAY OF CHAR
  769. )                  : APIRET;
  770.  
  771. PROCEDURE DosForceDelete
  772. ( FileName         : ARRAY OF CHAR
  773. )                  : APIRET;
  774.  
  775. PROCEDURE DosEditName
  776. ( EditLevel        : LONGCARD;
  777.   SourceString     : ARRAY OF CHAR;
  778.   EditString       : ARRAY OF CHAR;
  779.   VAR TargetBuf    : ARRAY OF CHAR;
  780.   TargetBufLen     : LONGCARD
  781. )                  : APIRET;
  782.  
  783. PROCEDURE DosMove
  784. ( OldPathName      : ARRAY OF CHAR;
  785.   NewPathName      : ARRAY OF CHAR
  786. )                  : APIRET;
  787.  
  788. PROCEDURE DosOpen
  789. ( FileName         : ARRAY OF CHAR;
  790.   VAR FileHandle   : HFILE;
  791.   VAR ActionTaken  : LONGCARD;
  792.   FileSize         : LONGCARD;
  793.   FileAttribute    : LONGCARD;    (* see DosFindFirst Attribute *)
  794.   OpenFlag         : LONGCARD;
  795.   OpenMode         : LONGCARD;
  796.   EABuf            : PEAOP2
  797. )                  : APIRET;
  798.  
  799. PROCEDURE DosProtectOpen
  800. ( FileName         : ARRAY OF CHAR;
  801.   VAR FileHandle   : HFILE;
  802.   VAR ActionTaken  : LONGCARD;
  803.   FileSize         : LONGCARD;
  804.   FileAttribute    : LONGCARD;    (* see DosFindFirst Attribute *)
  805.   OpenFlag         : LONGCARD;
  806.   OpenMode         : LONGCARD;
  807.   EABuf            : PEAOP2;
  808.   FileHandleLockID : FHLOCK
  809. )                  : APIRET;
  810.  
  811. PROCEDURE DosRead
  812. ( FileHandle       : HFILE;
  813.   VAR BufferArea   : ARRAY OF SYSTEM.BYTE;
  814.   BufferLength     : LONGCARD;
  815.   VAR BytesRead    : LONGCARD
  816. )                  : APIRET;
  817.  
  818. PROCEDURE DosProtectRead
  819. ( FileHandle       : HFILE;
  820.   VAR BufferArea   : ARRAY OF SYSTEM.BYTE;
  821.   BufferLength     : LONGCARD;
  822.   VAR BytesRead    : LONGCARD;
  823.   FileHandleLockID : FHLOCK
  824. )                  : APIRET;
  825.  
  826. PROCEDURE DosResetBuffer
  827. ( FileHandle       : HFILE
  828. )                  : APIRET;
  829.  
  830. PROCEDURE DosSetFileInfo
  831. ( FileHandle       : HFILE;
  832.   FileInfoLevel    : LONGCARD; (* <=2, see DosFindFirst FileInfoLevel *)
  833.   VAR FileInfoBuf  : ARRAY OF SYSTEM.BYTE;
  834.   FileInfoBufSize  : LONGCARD
  835. )                  : APIRET;
  836.  
  837. PROCEDURE DosProtectSetFileInfo
  838. ( FileHandle       : HFILE;
  839.   FileInfoLevel    : LONGCARD; (* <=2, see DosFindFirst FileInfoLevel *)
  840.   VAR FileInfoBuf  : ARRAY OF SYSTEM.BYTE;
  841.   FileInfoBufSize  : LONGCARD;
  842.   FileHandleLockID : FHLOCK
  843. )                  : APIRET;
  844.  
  845. PROCEDURE DosSetFileLocks
  846. ( FileHandle       : HFILE;
  847.   VAR UnLockRange  : FILELOCK;
  848.   VAR LockRange    : FILELOCK;
  849.   TimeOut          : LONGCARD;
  850.   Flags            : LONGCARD
  851. )                  : APIRET;
  852.  
  853. PROCEDURE DosProtectSetFileLocks
  854. ( FileHandle       : HFILE;
  855.   VAR UnLockRange  : FILELOCK;
  856.   VAR LockRange    : FILELOCK;
  857.   TimeOut          : LONGCARD;
  858.   Flags            : LONGCARD;
  859.   FileHandleLockID : FHLOCK
  860. )                  : APIRET;
  861.  
  862. PROCEDURE DosCancelLockRequest
  863. ( FileHandle       : HFILE;
  864.   VAR LockRange    : FILELOCK
  865. )                  : APIRET;
  866.  
  867. PROCEDURE DosSetFilePtr
  868. ( FileHandle       : HFILE;
  869.   Distance         : LONGINT;
  870.   MoveType         : LONGCARD;
  871.   VAR NewPointer   : LONGCARD
  872. )                  : APIRET;
  873.  
  874. PROCEDURE DosProtectSetFilePtr
  875. ( FileHandle       : HFILE;
  876.   Distance         : LONGINT;
  877.   MoveType         : LONGCARD;
  878.   VAR NewPointer   : LONGCARD;
  879.   FileHandleLockID : FHLOCK
  880. )                  : APIRET;
  881.  
  882. PROCEDURE DosSetFileSize
  883. ( FileHandle       : HFILE;
  884.   FileSize         : LONGCARD
  885. )                  : APIRET;
  886.  
  887. PROCEDURE DosProtectSetFileSize
  888. ( FileHandle       : HFILE;
  889.   FileSize         : LONGCARD;
  890.   FileHandleLockID : FHLOCK
  891. )                  : APIRET;
  892.  
  893. PROCEDURE DosSetVerify
  894. ( VerifySetting    : BOOLEAN
  895. )                  : APIRET;
  896.  
  897. PROCEDURE DosWrite
  898. ( FileHandle       : HFILE;
  899.   BufferArea       : ARRAY OF SYSTEM.BYTE;
  900.   BufferLength     : LONGCARD;
  901.   VAR BytesWritten : LONGCARD
  902. )                  : APIRET;
  903.  
  904. PROCEDURE DosProtectWrite
  905. ( FileHandle       : HFILE;
  906.   BufferArea       : ARRAY OF SYSTEM.BYTE;
  907.   BufferLength     : LONGCARD;
  908.   VAR BytesWritten : LONGCARD;
  909.   FileHandleLockID : FHLOCK
  910. )                  : APIRET;
  911.  
  912.  
  913. (*************************************************************************
  914.   File Handle Functions
  915. **************************************************************************)
  916.  
  917. PROCEDURE DosDupHandle
  918. ( OldFileHandle     : HFILE;
  919.   VAR NewFileHandle : HFILE
  920. )                   : APIRET;
  921.  
  922. PROCEDURE DosQueryFHState
  923. ( FileHandle          : HFILE;
  924.   VAR FileHandleState : LONGCARD  (* see DosOpen OpenMode *)
  925. )                     : APIRET;
  926.  
  927. PROCEDURE DosProtectQueryFHState
  928. ( FileHandle          : HFILE;
  929.   VAR FileHandleState : LONGCARD; (* see DosOpen OpenMode *)
  930.   FileHandleLockID    : FHLOCK
  931. )                     : APIRET;
  932.  
  933. PROCEDURE DosQueryHType
  934. ( FileHandle        : HFILE;
  935.   VAR HandleType    : LONGCARD;
  936.   VAR FlagWord      : LONGCARD
  937. )                   : APIRET;
  938.  
  939. PROCEDURE DosSetFHState
  940. ( FileHandle        : HFILE;
  941.   FileHandleState   : LONGCARD    (* see DosOpen OpenMode *)
  942. )                   : APIRET;
  943.  
  944. PROCEDURE DosProtectSetFHState
  945. ( FileHandle        : HFILE;
  946.   FileHandleState   : LONGCARD;   (* see DosOpen OpenMode *)
  947.   FileHandleLockID  : FHLOCK
  948. )                   : APIRET;
  949.  
  950. PROCEDURE DosSetMaxFH
  951. ( NumberHandles     : LONGCARD
  952. )                   : APIRET;
  953.  
  954. PROCEDURE DosSetRelMaxFH
  955. ( VAR ReqCount      : LONGINT;
  956.   VAR CurMaxFH      : LONGCARD
  957. )                   : APIRET;
  958.  
  959.  
  960. (*************************************************************************
  961.   File Query Functions
  962. **************************************************************************)
  963.  
  964. PROCEDURE DosEnumAttribute
  965. ( RefType           : LONGCARD;
  966.   FileRef           : ARRAY OF SYSTEM.BYTE;
  967.   EntryNum          : LONGCARD;
  968.   VAR EnumBuf       : ARRAY OF SYSTEM.BYTE;
  969.   EnumBufSize       : LONGCARD;
  970.   VAR EnumCnt       : LONGCARD;
  971.   InfoLevel         : LONGCARD
  972. )                   : APIRET;
  973.  
  974. PROCEDURE DosProtectEnumAttribute
  975. ( RefType           : LONGCARD;
  976.   FileRef           : ARRAY OF SYSTEM.BYTE;
  977.   EntryNum          : LONGCARD;
  978.   VAR EnumBuf       : ARRAY OF SYSTEM.BYTE;
  979.   EnumBufSize       : LONGCARD;
  980.   VAR EnumCnt       : LONGCARD;
  981.   InfoLevel         : LONGCARD;
  982.   FileHandleLockID  : FHLOCK
  983. )                   : APIRET;
  984.  
  985.  
  986. (* DosQueryFileInfo() returning:
  987.      FILESTATUS3 if level 1
  988.      FILESTATUS4 if level 2
  989.      EAOP2       if level 3
  990. *)
  991.  
  992. PROCEDURE DosQueryFileInfo
  993. ( FileHandle        : HFILE;
  994.   FileInfoLevel     : LONGCARD;
  995.   VAR FileInfoBuf   : ARRAY OF SYSTEM.BYTE;
  996.   FileInfoBufSize   : LONGCARD
  997. )                   : APIRET;
  998.  
  999. PROCEDURE DosProtectQueryFileInfo
  1000. ( FileHandle        : HFILE;
  1001.   FileInfoLevel     : LONGCARD;
  1002.   VAR FileInfoBuf   : ARRAY OF SYSTEM.BYTE;
  1003.   FileInfoBufSize   : LONGCARD;
  1004.   FileHandleLockID  : FHLOCK
  1005. )                   : APIRET;
  1006.  
  1007. PROCEDURE DosQueryVerify
  1008. ( VAR VerifySetting : BOOL32
  1009. )                   : APIRET;
  1010.  
  1011.  
  1012. (*************************************************************************
  1013.   Directory and Disk Functions
  1014. **************************************************************************)
  1015.  
  1016. PROCEDURE DosCreateDir
  1017. ( DirName          : ARRAY OF CHAR;
  1018.   EABuf            : PEAOP2
  1019. )                  : APIRET;
  1020.  
  1021. PROCEDURE DosDeleteDir
  1022. ( DirName          : ARRAY OF CHAR
  1023. )                  : APIRET;
  1024.  
  1025. PROCEDURE DosQueryCurrentDir
  1026. ( DriveNumber      : LONGCARD;    (* 0=current 1=A: 2=B: ... *)
  1027.   VAR DirPath      : ARRAY OF CHAR;
  1028.   VAR DirPathLen   : LONGCARD
  1029. )                  : APIRET;
  1030.  
  1031. PROCEDURE DosSetCurrentDir
  1032. ( DirName          : ARRAY OF CHAR
  1033. )                  : APIRET;
  1034.  
  1035. PROCEDURE DosSetDefaultDisk
  1036. ( DriveNumber      : LONGCARD     (* 1=A: 2=B: ... *)
  1037. )                  : APIRET;
  1038.  
  1039. PROCEDURE DosQueryCurrentDisk
  1040. ( VAR DriveNumber     : LONGCARD;
  1041.   VAR LogicalDriveMap : LONGCARD
  1042. )                     : APIRET;
  1043.  
  1044.  
  1045. (*************************************************************************
  1046.   Environment and Search Path Functions
  1047. **************************************************************************)
  1048.  
  1049. (* DosQueryPathInfo returning:
  1050.      FILESTATUS3 if level 1
  1051.      FILESTATUS4 if level 2
  1052.      EAOP2       if level 3
  1053.      full name   if level 5
  1054. *)
  1055.  
  1056. PROCEDURE DosQueryPathInfo
  1057. ( PathName          : ARRAY OF CHAR;
  1058.   PathInfoLevel     : LONGCARD;
  1059.   VAR PathInfoBuf   : ARRAY OF SYSTEM.BYTE;
  1060.   PathInfoBufSize   : LONGCARD
  1061. )                   : APIRET;
  1062.  
  1063. PROCEDURE DosSetPathInfo
  1064. ( PathName         : ARRAY OF CHAR;
  1065.   FileInfoLevel    : LONGCARD;  (* see DosSetFileInfo() FileInfoLevel *)
  1066.   VAR FileInfoBuf  : ARRAY OF SYSTEM.BYTE;
  1067.   FileInfoSize     : LONGCARD;
  1068.   PathInfoFlags    : LONGCARD
  1069. )                  : APIRET;
  1070.  
  1071.  
  1072. (*************************************************************************
  1073.   File System Driver Functions
  1074. **************************************************************************)
  1075.  
  1076. PROCEDURE DosFSAttach
  1077. ( DeviceName       : ARRAY OF CHAR;
  1078.   FSDName          : SYSTEM.ADDRESS;
  1079.   DataBuffer       : SYSTEM.ADDRESS;
  1080.   DataBufferLen    : LONGCARD;
  1081.   OpFlag           : LONGCARD
  1082. )                  : APIRET;
  1083.  
  1084. PROCEDURE DosFSCtl
  1085. ( DataArea            : ARRAY OF SYSTEM.BYTE;
  1086.   DataLengthMax       : LONGCARD;
  1087.   VAR DataLengthInOut : LONGCARD;
  1088.   ParmList            : SYSTEM.ADDRESS;
  1089.   ParmLengthMax       : LONGCARD;
  1090.   VAR ParmLengthInOut : LONGCARD;
  1091.   FunctionCode        : LONGCARD;
  1092.   RouteName           : ARRAY OF CHAR;
  1093.   FileHandle          : HFILE;
  1094.   RouteMethod         : LONGCARD
  1095. )                     : APIRET;
  1096.  
  1097. PROCEDURE DosQueryFSAttach
  1098. ( DeviceName          : ARRAY OF CHAR;
  1099.   Ordinal             : LONGCARD;
  1100.   FSAInfoLevel        : LONGCARD;
  1101.   VAR DataBuffer      : FSQBUFFER2;
  1102.   VAR DataBufferLen   : LONGCARD
  1103. )                     : APIRET;
  1104.  
  1105. PROCEDURE DosQueryFSInfo
  1106. ( DriveNumber         : LONGCARD;
  1107.   FSInfoLevel         : LONGCARD;
  1108.   VAR FSInfoBuf       : ARRAY OF SYSTEM.BYTE;
  1109.   FSInfoBufSize       : LONGCARD
  1110. )                     : APIRET;
  1111.  
  1112. PROCEDURE DosSetFSInfo
  1113. ( DriveNumber         : LONGCARD;
  1114.   FSInfoLevel         : LONGCARD;
  1115.   VAR FSInfoBuf       : ARRAY OF SYSTEM.BYTE;
  1116.   FSInfoBufSize       : LONGCARD
  1117. )                     : APIRET;
  1118.  
  1119. PROCEDURE DosShutDown
  1120. ( Reserved            : LONGCARD
  1121. )                     : APIRET;
  1122.  
  1123. END DOSFILEMGR.
  1124.