vfsmgr.pp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. {$MACRO ON}
  2. {$define Rsc := }
  3. (******************************************************************************
  4. *
  5. * Copyright (c) 2000 Palm, Inc. or its subsidiaries.
  6. * All rights reserved.
  7. *
  8. * File: VFSMgr.h
  9. *
  10. * Release: Palm OS SDK 4.0 (63220)
  11. *
  12. * Description:
  13. * Header file for VFS Manager.
  14. *
  15. * History:
  16. * 02/25/00 jed Created by Jesse Donaldson.
  17. *
  18. *****************************************************************************)
  19. {$IFNDEF FPC_DOTTEDUNITS}
  20. unit vfsmgr;
  21. {$ENDIF FPC_DOTTEDUNITS}
  22. interface
  23. {$IFDEF FPC_DOTTEDUNITS}
  24. uses PalmApi.Palmos, PalmApi.Coretraps, PalmApi.Errorbase, PalmApi.Datamgr, PalmApi.Systemresources;
  25. {$ELSE FPC_DOTTEDUNITS}
  26. uses palmos, coretraps, errorbase, datamgr, systemresources;
  27. {$ENDIF FPC_DOTTEDUNITS}
  28. const
  29. sysTrapVFSMgr = sysTrapFileSystemDispatch;
  30. vfsFtrIDVersion = 0; // ID of feature containing version of VFSMgr.
  31. // Check existence of this feature to see if VFSMgr is installed.
  32. vfsFtrIDDefaultFS = 1; // ID of feature containing the creator ID of the default filesystem library
  33. // this is the default choice when choosing a library for formatting/mounting
  34. vfsMgrVersionNum = UInt16(200); // version of the VFSMgr, obtained from the feature
  35. // MountClass constants:
  36. vfsMountClass_SlotDriver = sysFileTSlotDriver;
  37. vfsMountClass_Simulator = sysFileTSimulator;
  38. vfsMountClass_POSE = Rsc('pose');
  39. // Base MountParamType; others such as SlotMountParamType are extensions of this base type,
  40. // switched on value of "mountClass" parameter. It will make more sense someday when there
  41. // are other kinds of FileSystems... (Trust us. :-)
  42. type
  43. VFSAnyMountParamTag = record
  44. volRefNum: UInt16; // The volRefNum of the volume.
  45. reserved: UInt16;
  46. mountClass: UInt32; // 'libs' for slotDriver-based filesystems
  47. // Other fields here, depending on value of 'mountClass'
  48. end;
  49. VFSAnyMountParamType = VFSAnyMountParamTag;
  50. VFSAnyMountParamPtr = ^VFSAnyMountParamType;
  51. VFSSlotMountParamTag = record
  52. vfsMountParam: VFSAnyMountParamType; // mountClass = VFSMountClass_SlotDriver = 'libs'
  53. slotLibRefNum: UInt16;
  54. slotRefNum: UInt16;
  55. end;
  56. VFSSlotMountParamType = VFSSlotMountParamTag;
  57. VFSPOSEMountParamTag = record
  58. vfsMountParam: VFSAnyMountParamType; // mountClass = VFSMountClass_POSE = 'pose'
  59. poseSlotNum: UInt8;
  60. end;
  61. VFSPOSEMountParamType = VFSPOSEMountParamTag;
  62. (* For Example...
  63. VFSOtherMountParamTag = record
  64. vfsMountParam: VFSAnyMountParamType; // mountClass = 'othr' (for example)
  65. otherValue: UInt16;
  66. end;
  67. VFSOtherMountParamType = VFSOtherMountParamTag;
  68. *)
  69. FileInfoTag = record
  70. attributes: UInt32;
  71. nameP: PAnsiChar; // buffer to receive full name; pass NULL to avoid getting name
  72. nameBufLen: UInt16; // size of nameP buffer, in bytes
  73. end;
  74. FileInfoType = FileInfoTag;
  75. FileInfoPtr = ^FileInfoType;
  76. VolumeInfoTag = record
  77. attributes: UInt32; // read-only etc.
  78. fsType: UInt32; // Filesystem type for this volume (defined below)
  79. fsCreator: UInt32; // Creator code of filesystem driver for this volume. For use with VFSCustomControl().
  80. mountClass: UInt32; // mount class that mounted this volume
  81. // For slot based filesystems: (mountClass = vfsMountClass_SlotDriver)
  82. slotLibRefNum: UInt16; // Library on which the volume is mounted
  83. slotRefNum: UInt16; // ExpMgr slot number of card containing volume
  84. mediaType: UInt32; // Type of card media (mediaMemoryStick, mediaCompactFlash, etc...)
  85. reserved: UInt32; // reserved for future use (other mountclasses may need more space)
  86. end;
  87. VolumeInfoType = VolumeInfoTag;
  88. VolumeInfoPtr = ^VolumeInfoType;
  89. type
  90. FileRef = UInt32;
  91. const
  92. vfsInvalidVolRef = 0; // constant for an invalid volume reference, guaranteed not to represent a valid one. Use it like you would use NULL for a FILE*.
  93. vfsInvalidFileRef = 0; // constant for an invalid file reference, guaranteed not to represent a valid one. Use it like you would use NULL for a FILE*.
  94. (************************************************************
  95. * File Origin constants: (for the origins of relative offsets passed to 'seek' type routines).
  96. *************************************************************)
  97. const
  98. vfsOriginBeginning = 0; // from the beginning (first data byte of file)
  99. vfsOriginCurrent = 1; // from the current position
  100. vfsOriginEnd = 2; // from the end of file (one position beyond last data byte, only negative offsets are legal)
  101. type
  102. FileOrigin = UInt16;
  103. (************************************************************
  104. * openMode flags passed to VFSFileOpen
  105. *************************************************************)
  106. const
  107. vfsModeExclusive = $0001; // don't let anyone else open it
  108. vfsModeRead = $0002; // open for read access
  109. vfsModeWrite = $0004 or vfsModeExclusive; // open for write access, implies exclusive
  110. vfsModeCreate = $0008; // create the file if it doesn't already exist. Implemented in VFS layer, no FS lib call will ever have to handle this.
  111. vfsModeTruncate = $0010; // Truncate file to 0 bytes after opening, removing all existing data. Implemented in VFS layer, no FS lib call will ever have to handle this.
  112. vfsModeReadWrite = vfsModeWrite or vfsModeRead; // open for read/write access
  113. vfsModeLeaveOpen = $0020; // Leave the file open even if when the foreground task closes
  114. // Combination flag constants, for error checking purposes:
  115. vfsModeAll = vfsModeExclusive or vfsModeRead or vfsModeWrite or vfsModeCreate or vfsModeTruncate or vfsModeReadWrite or vfsModeLeaveOpen;
  116. vfsModeVFSLayerOnly = vfsModeCreate or vfsModeTruncate; // flags only used apps & the VFS layer, FS libraries will never see these.
  117. (************************************************************
  118. * File Attributes
  119. *************************************************************)
  120. vfsFileAttrReadOnly = $00000001;
  121. vfsFileAttrHidden = $00000002;
  122. vfsFileAttrSystem = $00000004;
  123. vfsFileAttrVolumeLabel = $00000008;
  124. vfsFileAttrDirectory = $00000010;
  125. vfsFileAttrArchive = $00000020;
  126. vfsFileAttrLink = $00000040;
  127. vfsFileAttrAll = $0000007f;
  128. (************************************************************
  129. * Volume Attributes
  130. *************************************************************)
  131. vfsVolumeAttrSlotBased = $00000001; // reserved
  132. vfsVolumeAttrReadOnly = $00000002; // volume is read only
  133. vfsVolumeAttrHidden = $00000004; // volume should not be user-visible.
  134. (************************************************************
  135. * Date constants (for use with VFSFileGet/SetDate)
  136. *************************************************************)
  137. vfsFileDateCreated = 1;
  138. vfsFileDateModified = 2;
  139. vfsFileDateAccessed = 3;
  140. (************************************************************
  141. * Iterator start and stop constants.
  142. * Used by VFSVolumeEnumerate, VFSDirEntryEnumerate, VFSDirEntryEnumerate
  143. *************************************************************)
  144. vfsIteratorStart = 0;
  145. vfsIteratorStop = $ffffffff;
  146. (************************************************************
  147. * 'handled' field bit constants
  148. * (for use with Volume Mounted/Unmounted notifications)
  149. *************************************************************)
  150. vfsHandledUIAppSwitch = $01; // Any UI app switching has already been handled.
  151. // The VFSMgr will not UIAppSwitch to the start.prc app
  152. // (but it will loaded & sent the AutoStart launchcode),
  153. // and the Launcher will not switch to itself.
  154. vfsHandledStartPrc = $02; // And automatic running of start.prc has already been handled.
  155. // VFSMgr will not load it, send it the AutoStart launchcode,
  156. // or UIAppSwitch to it.
  157. (************************************************************
  158. * Format/Mount flags (for use with VFSVolumeFormat/Mount)
  159. *************************************************************)
  160. vfsMountFlagsUseThisFileSystem = $01; // Mount/Format the volume with the filesystem specified
  161. // vfsMountFlagsPrivate1 = $02 // for system use only
  162. // vfsMountFlagsPrivate2 = $04 // for system use only
  163. vfsMountFlagsReserved1 = $08; // reserved
  164. vfsMountFlagsReserved2 = $10; // reserved
  165. vfsMountFlagsReserved3 = $20; // reserved
  166. vfsMountFlagsReserved4 = $40; // reserved
  167. vfsMountFlagsReserved5 = $80; // reserved
  168. (************************************************************
  169. * Common filesystem types. Used by FSFilesystemType and SlotCardIsFilesystemSupported.
  170. *************************************************************)
  171. vfsFilesystemType_VFAT = Rsc('vfat'); // FAT12 and FAT16 extended to handle long file names
  172. vfsFilesystemType_FAT = Rsc('fats'); // FAT12 and FAT16 which only handles 8.3 file names
  173. vfsFilesystemType_NTFS = Rsc('ntfs'); // Windows NT filesystem
  174. vfsFilesystemType_HFSPlus = Rsc('hfse'); // The Macintosh extended hierarchical filesystem
  175. vfsFilesystemType_HFS = Rsc('hfss'); // The Macintosh standard hierarchical filesystem
  176. vfsFilesystemType_MFS = Rsc('mfso'); // The Macintosh original filesystem
  177. vfsFilesystemType_EXT2 = Rsc('ext2'); // Linux filesystem
  178. vfsFilesystemType_FFS = Rsc('ffsb'); // Unix Berkeley block based filesystem
  179. vfsFilesystemType_NFS = Rsc('nfsu'); // Unix Networked filesystem
  180. vfsFilesystemType_AFS = Rsc('afsu'); // Unix Andrew filesystem
  181. vfsFilesystemType_Novell = Rsc('novl'); // Novell filesystem
  182. vfsFilesystemType_HPFS = Rsc('hpfs'); // OS2 High Performance filesystem
  183. (************************************************************
  184. * Error codes
  185. *************************************************************)
  186. vfsErrBufferOverflow = vfsErrorClass or 1; // passed in buffer is too small
  187. vfsErrFileGeneric = vfsErrorClass or 2; // Generic file error.
  188. vfsErrFileBadRef = vfsErrorClass or 3; // the fileref is invalid (has been closed, or was not obtained from VFSFileOpen())
  189. vfsErrFileStillOpen = vfsErrorClass or 4; // returned from FSFileDelete if the file is still open
  190. vfsErrFilePermissionDenied = vfsErrorClass or 5; // The file is read only
  191. vfsErrFileAlreadyExists = vfsErrorClass or 6; // a file of this name exists already in this location
  192. vfsErrFileEOF = vfsErrorClass or 7; // file pointer is at end of file
  193. vfsErrFileNotFound = vfsErrorClass or 8; // file was not found at the path specified
  194. vfsErrVolumeBadRef = vfsErrorClass or 9; // the volume refnum is invalid.
  195. vfsErrVolumeStillMounted = vfsErrorClass or 10; // returned from FSVolumeFormat if the volume is still mounted
  196. vfsErrNoFileSystem = vfsErrorClass or 11; // no installed filesystem supports this operation
  197. vfsErrBadData = vfsErrorClass or 12; // operation could not be completed because of invalid data (i.e., import DB from .PRC file)
  198. vfsErrDirNotEmpty = vfsErrorClass or 13; // can't delete a non-empty directory
  199. vfsErrBadName = vfsErrorClass or 14; // invalid filename, or path, or volume label or something...
  200. vfsErrVolumeFull = vfsErrorClass or 15; // not enough space left on volume
  201. vfsErrUnimplemented = vfsErrorClass or 16; // this call is not implemented
  202. vfsErrNotADirectory = vfsErrorClass or 17; // This operation requires a directory
  203. vfsErrIsADirectory = vfsErrorClass or 18; // This operation requires a regular file, not a directory
  204. vfsErrDirectoryNotFound = vfsErrorClass or 19; // Returned from VFSFileCreate when the path leading up to the new file does not exist
  205. vfsErrNameShortened = vfsErrorClass or 20; // A volume name or filename was automatically shortened to conform to filesystem spec
  206. (************************************************************
  207. * Selectors for routines found in the VFS manager. The order
  208. * of these selectors MUST match the jump table in VFSMgr.c.
  209. *************************************************************)
  210. vfsTrapInit = 0;
  211. vfsTrapCustomControl = 1;
  212. vfsTrapFileCreate = 2;
  213. vfsTrapFileOpen = 3;
  214. vfsTrapFileClose = 4;
  215. vfsTrapFileReadData = 5;
  216. vfsTrapFileRead = 6;
  217. vfsTrapFileWrite = 7;
  218. vfsTrapFileDelete = 8;
  219. vfsTrapFileRename = 9;
  220. vfsTrapFileSeek = 10;
  221. vfsTrapFileEOF = 11;
  222. vfsTrapFileTell = 12;
  223. vfsTrapFileResize = 13;
  224. vfsTrapFileGetAttributes = 14;
  225. vfsTrapFileSetAttributes = 15;
  226. vfsTrapFileGetDate = 16;
  227. vfsTrapFileSetDate = 17;
  228. vfsTrapFileSize = 18;
  229. vfsTrapDirCreate = 19;
  230. vfsTrapDirEntryEnumerate = 20;
  231. vfsTrapGetDefaultDirectory = 21;
  232. vfsTrapRegisterDefaultDirectory = 22;
  233. vfsTrapUnregisterDefaultDirectory = 23;
  234. vfsTrapVolumeFormat = 24;
  235. vfsTrapVolumeMount = 25;
  236. vfsTrapVolumeUnmount = 26;
  237. vfsTrapVolumeEnumerate = 27;
  238. vfsTrapVolumeInfo = 28;
  239. vfsTrapVolumeGetLabel = 29;
  240. vfsTrapVolumeSetLabel = 30;
  241. vfsTrapVolumeSize = 31;
  242. vfsTrapInstallFSLib = 32;
  243. vfsTrapRemoveFSLib = 33;
  244. vfsTrapImportDatabaseFromFile = 34;
  245. vfsTrapExportDatabaseToFile = 35;
  246. vfsTrapFileDBGetResource = 36;
  247. vfsTrapFileDBInfo = 37;
  248. vfsTrapFileDBGetRecord = 38;
  249. vfsTrapImportDatabaseFromFileCustom = 39;
  250. vfsTrapExportDatabaseToFileCustom = 40;
  251. // System use only
  252. vfsTrapPrivate1 = 41;
  253. vfsMaxSelector = vfsTrapPrivate1;
  254. type
  255. VFSImportProcPtr = function(totalBytes, offset: UInt32; userDataP: Pointer): Err;
  256. VFSExportProcPtr = function(totalBytes, offset: UInt32; userDataP: Pointer): Err;
  257. function VFSInit: Err; syscall sysTrapVFSMgr, vfsTrapInit;
  258. // if you pass NULL for fsCreator, VFS will iterate through
  259. // all installed filesystems until it finds one that does not return an error.
  260. function VFSCustomControl(fsCreator, apiCreator: UInt32; apiSelector: UInt16;
  261. valueP: Pointer; var valueLenP: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapCustomControl;
  262. function VFSFileCreate(volRefNum: UInt16; const pathNameP: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapFileCreate;
  263. function VFSFileOpen(volRefNum: UInt16; const pathNameP: PAnsiChar; openMode: UInt16; var fileRefP: FileRef): Err; syscall sysTrapVFSMgr, vfsTrapFileOpen;
  264. function VFSFileClose(fileRef: FileRef): Err; syscall sysTrapVFSMgr, vfsTrapFileClose;
  265. function VFSFileReadData(fileRef: FileRef; numBytes: UInt32; bufBaseP: Pointer;
  266. offset: UInt32; var numBytesReadP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileReadData;
  267. function VFSFileRead(fileRef: FileRef; numBytes: UInt32; bufP: Pointer; var numBytesReadP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileRead;
  268. function VFSFileWrite(fileRef: FileRef; numBytes: UInt32; const dataP: Pointer; var numBytesWrittenP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileWrite;
  269. // some file routines work on directories
  270. function VFSFileDelete(volRefNum: UInt16; const pathNameP: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapFileDelete;
  271. function VFSFileRename(volRefNum: UInt16; const pathNameP, newNameP: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapFileRename;
  272. function VFSFileSeek(fileRef: FileRef; origin: FileOrigin; offset: Int32): Err; syscall sysTrapVFSMgr, vfsTrapFileSeek;
  273. function VFSFileEOF(fileRef: FileRef): Err; syscall sysTrapVFSMgr, vfsTrapFileEOF;
  274. function VFSFileTell(fileRef: FileRef; var filePosP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileTell;
  275. function VFSFileSize(fileRef: FileRef; var fileSizeP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileSize;
  276. function VFSFileResize(fileRef: FileRef; newSize: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileResize;
  277. function VFSFileGetAttributes(fileRef: FileRef; var attributesP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileGetAttributes;
  278. function VFSFileSetAttributes(fileRef: FileRef; attributes: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileSetAttributes;
  279. function VFSFileGetDate(fileRef: FileRef; whichDate: UInt16; var dateP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileGetDate;
  280. function VFSFileSetDate(fileRef: FileRef; whichDate: UInt16; date: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileSetDate;
  281. function VFSDirCreate(volRefNum: UInt16; const dirNameP: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapDirCreate;
  282. function VFSDirEntryEnumerate(dirRef: FileRef; var dirEntryIteratorP: UInt32; var infoP: FileInfoType): Err; syscall sysTrapVFSMgr, vfsTrapDirEntryEnumerate;
  283. function VFSGetDefaultDirectory(volRefNum: UInt16; const fileTypeStr: PAnsiChar;
  284. pathStr: PAnsiChar; var bufLenP: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapGetDefaultDirectory;
  285. function VFSRegisterDefaultDirectory(const fileTypeStr: PAnsiChar; mediaType: UInt32;
  286. const pathStr: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapRegisterDefaultDirectory;
  287. function VFSUnregisterDefaultDirectory(const fileTypeStr: PAnsiChar; mediaType: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapUnregisterDefaultDirectory;
  288. function VFSVolumeFormat(flags: UInt8; fsLibRefNum: UInt16; vfsMountParamP: VFSAnyMountParamPtr): Err; syscall sysTrapVFSMgr, vfsTrapVolumeFormat;
  289. function VFSVolumeMount(flags: UInt8; fsLibRefNum: UInt16; vfsMountParamP: VFSAnyMountParamPtr): Err; syscall sysTrapVFSMgr, vfsTrapVolumeMount;
  290. function VFSVolumeUnmount(volRefNum: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapVolumeUnmount;
  291. function VFSVolumeEnumerate(var volRefNumP: UInt16; var volIteratorP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapVolumeEnumerate;
  292. function VFSVolumeInfo(volRefNum: UInt16; var volInfoP: VolumeInfoType): Err; syscall sysTrapVFSMgr, vfsTrapVolumeInfo;
  293. function VFSVolumeGetLabel(volRefNum: UInt16; labelP: PAnsiChar; bufLen: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapVolumeGetLabel;
  294. function VFSVolumeSetLabel(volRefNum: UInt16; const labelP: PAnsiChar): Err; syscall sysTrapVFSMgr, vfsTrapVolumeSetLabel;
  295. function VFSVolumeSize(volRefNum: UInt16; var volumeUsedP, volumeTotalP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapVolumeSize;
  296. function VFSInstallFSLib(creator: UInt32; var fsLibRefNumP: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapInstallFSLib;
  297. function VFSRemoveFSLib(fsLibRefNum: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapRemoveFSLib;
  298. function VFSImportDatabaseFromFile(volRefNum: UInt16; const pathNameP: PAnsiChar;
  299. var cardNoP: UInt16; var dbIDP: LocalID): Err; syscall sysTrapVFSMgr, vfsTrapImportDatabaseFromFile;
  300. function VFSImportDatabaseFromFileCustom(volRefNum: UInt16; const pathNameP: PAnsiChar;
  301. var cardNoP: UInt16; var dbIDP: LocalID;
  302. importProcP: VFSImportProcPtr; userDataP: Pointer): Err; syscall sysTrapVFSMgr, vfsTrapImportDatabaseFromFileCustom;
  303. function VFSExportDatabaseToFile(volRefNum: UInt16; const pathNameP: PAnsiChar;
  304. cardNo: UInt16; dbID: LocalID): Err; syscall sysTrapVFSMgr, vfsTrapExportDatabaseToFile;
  305. function VFSExportDatabaseToFileCustom(volRefNum: UInt16; const pathNameP: PAnsiChar;
  306. cardNo: UInt16; dbID: LocalID;
  307. exportProcP: VFSExportProcPtr; userDataP: Pointer): Err; syscall sysTrapVFSMgr, vfsTrapExportDatabaseToFileCustom;
  308. function VFSFileDBGetResource(ref: FileRef; type_: DmResType; resID: DmResID; var resHP: MemHandle): Err; syscall sysTrapVFSMgr, vfsTrapFileDBGetResource;
  309. function VFSFileDBInfo(ref: FileRef; nameP: PAnsiChar; var attributesP, versionP: UInt16;
  310. var crDateP, modDateP, bckUpDateP, modNumP: UInt32;
  311. var appInfoHP, sortInfoHP: MemHandle; var typeP, creatorP: UInt32;
  312. var numRecordsP: UInt16): Err; syscall sysTrapVFSMgr, vfsTrapFileDBInfo;
  313. function VFSFileDBGetRecord(ref: FileRef; recIndex: UInt16; var recHP: MemHandle;
  314. var recAttrP: UInt8; var uniqueIDP: UInt32): Err; syscall sysTrapVFSMgr, vfsTrapFileDBGetRecord;
  315. implementation
  316. end.