Unit Filesystem

From Ultibo.org
Revision as of 04:26, 30 December 2016 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


Ultibo FileSystem interface unit

Numbering of Devices, Partitions, Volumes, Drives etc


Example:

Machine with 2 Floppy drives, 2 Fixed drives

Fixed Drive 1 has 2 Partitions (1 Primary and 1 Extended)

Fixed Drive 2 has 1 Partition (1 Primary)

\Floppy0 = Device 00h / Partition 0

\Floppy1 = Device 01h / Partition 0

\Harddisk0\Partition1 = Device 80h / Partition 1

\Harddisk0\Extended1 = Device 80h / Extended 1

\Harddisk0\Partition2 = Device 80h / Partition 2

\Harddisk1\Partition1 = Device 81h / Partition 1

\Volume1 = \Floppy0

\Volume2 = \Floppy1

\Volume3 = \Harddisk0\Partition1

\Volume4 = \Harddisk1\Partition1

\Volume5 = \Harddisk0\Partition2

A: = \Volume1

B: = \Volume2

C: = \Volume3 (Alternate Name = \HarddiskVolume1)

D: = \Volume4 (Alternate Name = \HarddiskVolume2)

E: = \Volume5 (Alternate Name = \HarddiskVolume3)

Constants



FileSystem specific constants FILESYS_*
FILESYS_STORAGE_TIMER_INTERVAL = 500;  


FileSystem lock state constants FILESYS_LOCK_*
FILESYS_LOCK_NONE = 0;  
FILESYS_LOCK_READ = 1;  
FILESYS_LOCK_WRITE = 2;  
FILESYS_LOCK_AUTO = 3; Not intended for use in all situations, use with extreme caution.


FileSystem cache constants FILESYS_CACHE_*
FILESYS_CACHE_THREAD_NAME = 'Filesystem Cache'; Thread name for Filesystem cache threads
FILESYS_CACHE_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for Filesystem cache threads
 
FILESYS_CACHE_TIMER_INTERVAL = 50; 50ms timer interval for Filesystem cache
FILESYS_CACHE_FLUSH_TIMEOUT = 3000; Filesystem cache flush timeout 3 seconds
FILESYS_CACHE_DISCARD_TIMEOUT = 180000; Filesystem cache discard timeout 3 minutes


FileSystem entry timer constants FILESYS_ENTRY_*
FILESYS_ENTRY_TIMER_INTERVAL = 1000; 1000ms timer interval for Filesystem entries
FILESYS_ENTRY_DELETE_TIMEOUT = 30000; Filesystem entry delete timeout 30 seconds


FileSystem cache timer constants CACHE_TIMER_*
CACHE_TIMER_KEY_NONE = TIMER_KEY_NONE;  
CACHE_TIMER_KEY_MAX = TIMER_KEY_MAX;  
CACHE_TIMER_KEY_MIN = TIMER_KEY_MIN;  


FileSystem entry timer constants ENTRY_TIMER_*
ENTRY_TIMER_KEY_NONE = TIMER_KEY_NONE;  
ENTRY_TIMER_KEY_MAX = TIMER_KEY_MAX;  
ENTRY_TIMER_KEY_MIN = TIMER_KEY_MIN;  


FileSystem partition, device and volume constants *_PARTITION, *_DEVICE, *_VOLUME
MIN_FLOPPY_DEVICE = $00;  
MAX_FLOPPY_DEVICE = $7F;  
 
MIN_FIXED_DEVICE = $80;  
MAX_FIXED_DEVICE = $FF; Extends over CDROM/Other
 
MIN_CDROM_DEVICE = $E0;  
MAX_CDROM_DEVICE = $EF;  
 
MIN_OTHER_DEVICE = $F0;  
MAX_OTHER_DEVICE = $FF;  
 
INVALID_PARTITION = -1;  
INVALID_DEVICE = -1;  
INVALID_VOLUME = 0;  
 
MIN_PARTITION = 0;  
MAX_PARTITION = 3;  
MAX_EXTENDED = 1; Only 2 partitions in second level
 
MIN_FLOPPY_DRIVE = MIN_DRIVE;  
MAX_FLOPPY_DRIVE = MIN_DRIVE + 1;  
 
MIN_FIXED_DRIVE = MIN_DRIVE + 2;  
MAX_FIXED_DRIVE = MAX_DRIVE;  
 
MIN_SECTOR_SIZE = 512;  
MAX_SECTOR_SIZE = 4096;  
ISO_SECTOR_SIZE = 2048;  
 
VOLUME_PREFIX = '\Volume'; eg \Volume1
EXTENDED_PREFIX = '\Extended'; eg \Extended1
PARTITION_PREFIX = '\Partition'; eg \Partition1
CONTROLLER_PREFIX = '\Controller'; eg \Controller0
CDROM_DEVICE_PREFIX = '\Cdrom'; eg \Cdrom0
OTHER_DEVICE_PREFIX = '\Other'; eg \Other0
FIXED_DEVICE_PREFIX = '\Harddisk'; eg \Harddisk0
FLOPPY_DEVICE_PREFIX = '\Floppy'; eg \Floppy0
UNKNOWN_DEVICE_PREFIX = '\Unknown'; eg \Unknown0
 
VOLUME_PATH_PREFIX = '\\?'; eg \\?\Volume1\Home
DEVICE_PATH_PREFIX = '\\.'; eg \\.\Harddisk0\Partition1\Home
REPARSE_PATH_PREFIX = '\??\';  
 
BOOT_RECORD_SIGNATURE = $AA55;  
PARTITION_RECORD_SIGNATURE = $AA55;  
BOOT_SECTOR_SIGNATURE = $AA55;  


FileSystem find flag constants FIND_FLAG_*
FIND_FLAG_NONE = $00000000;  
FIND_FLAG_FILE_NAMES = $00000001;  


FileSystem find wildcard constants FIND_WILDCARD_*
FIND_WILDCARD_NAME = '*.*';  
FIND_WILDCARD_STREAM = '*';  


File mode constants fm*Mask
fmOpenMask = $000F;  
fmShareMask = $00F0;  


File attribute constants fa*
faDot = $01000000;  
faDotDot = $02000000;  
faFile = $04000000;  
faStream = $08000000;  
faFlagName = $00100000; Used for FAT case flags
faFlagExt = $00200000; Used for FAT case flags
faFlagBoth = (faFlagName or faFlagExt);  
faFlagLong = $00400000; Not currently used
faFlagMetafile = $00800000; Used for NTFS Metafiles
 
faFlagMask = $0FFF0000; Used to preserve internal attributes
faFindMask = $0000FFFF; Used to mask internal attributes
faMatchMask = (faFile or faStream or faVolumeID or faDirectory);  
 
Additional File Attribute Flags for NTFS/EXTFS/NSS
faDevice = $00000040;  
faNormal = $00000080;  
faTemporary = $00000100;  
faSparse = $00000200;  
faReparse = $00000400;  
faCompressed = $00000800;  
faOffline = $00001000;  
faNotIndexed = $00002000;  
faEncrypted = $00004000;  
 
faMftDirectory = $10000000; Used only by FileName Attribute
faMftIndexView = $20000000; Used by both the StandardInformation and FileName attributes
 
Note: NTFS does not store the faVolumeID or faDirectory attributes
 
Additional File Attribute constants
faNone = $00000000;  
faStandard = (faReadOnly or faHidden or faSysFile or faArchive);  
faLongName = (faReadOnly or faHidden or faSysFile or faVolumeID);  
faLongMask = (faReadOnly or faHidden or faSysFile or faVolumeID or faDirectory or faArchive);  


FileSystem volume attribute constants va*
vaNone = $00000000;  
vaCaseSensitive = $00000001;  
vaCasePreserved = $00000002;  
vaUnicode = $00000004;  
vaPersistentAcls = $00000008;  
vaFileCompression = $00000010;  
vaVolumeQuotas = $00000020;  
vaSparseFiles = $00000040;  
vaReparsePoints = $00000080;  
vaRemoteStorage = $00000100;  
vaLongNamesApi = $00004000;  
vaVolumeCompressed = $00008000;  
vaObjectIds = $00010000;  
vaEncryption = $00020000;  
vaNamedStreams = $00040000;  
vaReadOnly = $00080000;  
 
Additional Volume Attribute constants
vaBootCatalog = $01000000; Used to indicate support for ISO Boot Catalogs
vaVirtualVolume = $02000000; Used to indicate Volume is Virtual or on a Virtual Device
vaFolderEncryption = $04000000; Used to indicate support for Folder Encryption (New files in folder are automatically encrypted)
vaFolderCompression = $08000000; Used to indicate support for Folder Compression (New files in folder are automatically compressed)


FileSystem device attribute constants da*
daNone = $00000000;  
daWriteable = $00000001;  
daVirtual = $00000002;  


FileSystem image attribute constants ia*
iaNone = $00000000;  
iaDisk = $00000001; Memory/File/Device (All others always Disk)
iaPartition = $00000002; Memory/File/Device
iaVolume = $00000004; Memory/File/Device
iaDrive = $00000008; Memory/File/Device
iaCDROM = $00000010; Memory/File/Device/Iso
iaDVD = $00000020; Memory/File/Device/Iso
iaFlat = $00000040; Bochs
iaSparse = $00000080; Bochs
iaGrowing = $00000100; Bochs
iaFixed = $00000200; Vpc/Vbox/Vmware
iaDynamic = $00000400; Vpc/Vbox/Vmware
iaSplit = $00000800; Vpc/Vmware/WIM/Ghost/Portlock/Powerquest
iaUndoable = $00001000; Vpc/Vbox/Vmware
 
iaReadable = $00010000; All
iaWriteable = $00020000; All
iaEraseable = $00040000; All


FileSystem catalog attribute constants ca*
caNone = $00000000;  
caDefault = $00000001; Initial/Default Entry
caBootable = $00000002; Boot Indicator
caNoEmulation = $00000004; No Emulation
caFloppy12M = $00000008; 1.2M
caFloppy144M = $00000010; 1.44M
caFloppy288M = $00000020; 2.88M
caHardDisk = $00000040; Hard Disk


FileSystem misc constants NAME_HASH_SIZE*
NAME_HASH_SIZE = 8; Used for Internal Name Hash Generation only


FileSystem partition Id constants pid*
See http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
 
MAX_PARTITION_ID = 255;  
pidUnused = 0; Empty
pidFAT12 = 1;  
pidXENIXROOT = 2;  
pidXENIXUSR = 3;  
pidFAT16 = 4; under 32M
pidExtended = 5;  
pidFAT16HUGE = 6; over 32M
pidHPFSNTFS = 7;  
pidAIXOS2 = 8;  
pidAIX = 9;  
pidOS2BOOT = 10;  
pidFAT32 = 11;  
pidFAT32LBA = 12;  
pidUnknown013 = 13;  
pidFAT16LBA = 14;  
pidExtLBA = 15;  
pidOPUS = 16;  
pidHIDDEN12 = 17;  
pidCompaqDiag = 18;  
pidUnknown019 = 19;  
pidHIDDEN16 = 20;  
pidUnknown021 = 21;  
pidHIDDEN16HUGE = 22;  
pidHIDDENHPFS = 23;  
pidASTSWAP = 24;  
pidWillowtech = 25;  
pidUnknown026 = 26;  
pidHIDDEN32 = 27;  
pidHIDDEN32LBA = 28;  
pidUnknown029 = 29;  
pidHIDDEN16LBA = 30;  
pidUnknown031 = 31;  
pidWillowsoft = 32;  
pidOxygen = 33;  
pidOxygenExtended = 34;  
pidReserved035 = 35;  
pidNECMSDOS = 36;  
pidUnknown037 = 37;  
pidUnknown038 = 38;  
pidUnknown039 = 39;  
pidUnknown040 = 40;  
pidUnknown041 = 41;  
pidUnknown042 = 42;  
pidUnknown043 = 43;  
pidUnknown044 = 44;  
pidUnknown045 = 45;  
pidUnknown046 = 46;  
pidUnknown047 = 47;  
pidUnknown048 = 48;  
pidReserved049 = 49;  
pidAlienNOS = 50;  
pidReserved051 = 51;  
pidReserved052 = 52;  
pidOS2JFS = 53;  
pidReserved054 = 54;  
pidUnknown055 = 55;  
pidTheos057 = 56;  
pidPlan9 = 57;  
pidTheos058 = 58;  
pidTheos059 = 59;  
pidPowerQuest = 60;  
pidHiddenNetware = 61;  
pidUnknown062 = 62;  
pidUnknown063 = 63;  
pidVENIX286 = 64;  
pidPersonalRISC = 65;  
pidSFS = 66;  
pidPTSDOS = 67;  
pidGoBack = 68;  
pidEUMEL069 = 69;  
pidEUMEL070 = 70;  
pidEUMEL071 = 71;  
pidEUMEL072 = 72;  
pidUnknown073 = 73;  
pidAdaOS = 74;  
pidUnknown075 = 75;  
pidOberon = 76;  
pidQNX4077 = 77;  
pidQNX4078 = 78;  
pidQNX4079 = 79;  
pidOnTrack080 = 80;  
pidNOVELL081 = 81;  
pidCPM = 82;  
pidOnTrack083 = 83;  
pidOnTrack084 = 84;  
pidEZDrive = 85;  
pidGoldenBow = 86;  
pidUnknown087 = 87;  
pidUnknown088 = 88;  
pidUnknown089 = 89;  
pidUnknown090 = 90;  
pidUnknown091 = 91;  
pidPriamEdisk = 92;  
pidUnknown093 = 93;  
pidUnknown094 = 94;  
pidUnknown095 = 95;  
pidUnknown096 = 96;  
pidSpeedStor097 = 97;  
pidUnknown098 = 98;  
pidSysV = 99;  
pidNetware286 = 100;  
pidNWFS = 101; Traditional / Netware 6 Master
pidUnknown102 = 102;  
pidNovell103 = 103;  
pidNovell104 = 104;  
pidNSS = 105; NSS / Netware 6
pidUnknown106 = 106;  
pidUnknown107 = 107;  
pidUnknown108 = 108;  
pidUnknown109 = 109;  
pidUnknown110 = 110;  
pidUnknown111 = 111;  
pidDiskSecure = 112;  
pidUnknown113 = 113;  
pidUnknown114 = 114;  
pidReserved115 = 115;  
pidReserved116 = 116;  
pidPCIX = 117;  
pidReserved118 = 118;  
pidUnknown119 = 119;  
pidUnknown120 = 120;  
pidUnknown121 = 121;  
pidUnknown122 = 122;  
pidUnknown123 = 123;  
pidUnknown124 = 124;  
pidUnknown125 = 125;  
pidUnknown126 = 126;  
pidUnknown127 = 127;  
pidMinix = 128;  
pidLinuxMinix = 129;  
pidLinuxSwap = 130;  
pidLinuxNative = 131;  
pidHIDDENC = 132;  
pidLinuxExtended = 133;  
pidFAT16Stripe = 134;  
pidNTFSStripe = 135;  
pidUnknown136 = 136;  
pidUnknown137 = 137;  
pidUnknown138 = 138;  
pidUnknown139 = 139;  
pidUnknown140 = 140;  
pidUnknown141 = 141;  
pidUnknown142 = 142;  
pidUnknown143 = 143;  
pidUnknown144 = 144;  
pidUnknown145 = 145;  
pidUnknown146 = 146;  
pidAmoeba = 147;  
pidAmoebaBBT = 148;  
pidUnknown149 = 149;  
pidUnknown150 = 150;  
pidUnknown151 = 151;  
pidUnknown152 = 152;  
pidUnknown153 = 153;  
pidUnknown154 = 154;  
pidUnknown155 = 155;  
pidUnknown156 = 156;  
pidUnknown157 = 157;  
pidUnknown158 = 158;  
pidUnknown159 = 159;  
pidPhoenixPM = 160;  
pidReserved161 = 161;  
pidUnknown162 = 162;  
pidReserved163 = 163;  
pidReserved164 = 164;  
pidFreeBSD = 165;  
pidOpenBSD = 166;  
pidNeXTStep = 167;  
pidUnknown168 = 168;  
pidUnknown169 = 169;  
pidUnknown170 = 170;  
pidDarwinBoot = 171;  
pidUnknown172 = 172;  
pidUnknown173= 173;  
pidUnknown174 = 174;  
pidUnknown175 = 175;  
pidUnknown176 = 176;  
pidUnknown177 = 177;  
pidUnknown178 = 178;  
pidUnknown179 = 179;  
pidReserved180 = 180;  
pidUnknown181 = 181;  
pidFAT16MirrorA = 182;  
pidNTFSMirrorA = 183;  
pidBSDIswap = 184;  
pidUnknown185 = 185;  
pidUnknown186 = 186;  
pidUnknown187 = 187;  
pidUnknown188 = 188;  
pidUnknown189 = 189;  
pidUnknown190= 190;  
pidUnknown191 = 191;  
pidUnknown192 = 192;  
pidDRDOSFAT12 = 193;  
pidUnknown194 = 194;  
pidUnknown195 = 195;  
pidDRDOSFAT16 = 196;  
pidUnknown197 = 197;  
pidFAT16MirrorB = 198;  
pidNTFSMirrorB = 199;  
pidUnknown200 = 200;  
pidUnknown201 = 201;  
pidUnknown202 = 202;  
pidUnknown203 = 203;  
pidUnknown204 = 204;  
pidUnknown205 = 205;  
pidUnknown206 = 206;  
pidUnknown207 = 207;  
pidUnknown208 = 208;  
pidUnknown209 = 209;  
pidTinyEFAT = 210;  
pidEFAT = 211;  
pidSecuredEFAT = 212;  
pidOpticalEFAT = 213;  
pidUnknown214 = 214;  
pidUnknown215 = 215;  
pidCPM86 = 216;  
pidUnknown217 = 217;  
pidUnknown218 = 218;  
pidConcurrentCPM = 219;  
pidUnknown220 = 220;  
pidUnknown221 = 221;  
pidUnknown222 = 222;  
pidUnknown223 = 223;  
pidUnknown224 = 224;  
pidSpeedStorFAT12 = 225;  
pidUnknown226 = 226;  
pidUnknown227 = 227;  
pidSpeedStorFAT16 = 228;  
pidReserved229 = 229;  
pidReserved230 = 230;  
pidUnknown231 = 231;  
pidUnknown232 = 232;  
pidUnknown233 = 233;  
pidUnknown234 = 234;  
pidBeOSBFS1 = 235;  
pidUnknown236 = 236;  
pidUnknown237 = 237;  
pidUnknown238 = 238;  
pidUnknown239 = 239;  
pidLinuxRISC = 240;  
pidStorageDimension = 241;  
pidDOS33Secondary = 242;  
pidSpeedStor243 = 243;  
pidSpeedStor244 = 244;  
pidPrologue = 245;  
pidSpeedStor246 = 246;  
pidOSGEFAT = 247;  
pidUnknown248 = 248;  
pidUnknown249 = 249;  
pidBochsX86 = 250;  
pidVMware = 251;  
pidVMwareSwap = 252;  
pidLinuxRAID = 253;  
pidLANstep = 254;  
pidXenixBBT = 255;  
 
PARTITION_NAMES:array[0..MAX_PARTITION_ID] of String = (
'Unused',  
'FAT12',  
'XENIX ROOT',  
'XENIX USR',  
'FAT16 (up to 32M)',  
'Extended',  
'FAT16 (over 32M)',  
'HPFS or NTFS',  
'AIX or OS/2',  
'AIX',  
'OS/2 Boot Manager',  
'FAT32',  
'FAT32 (LBA)',  
'Unknown',  
'FAT16 (LBA)',  
'Extended (LBA)',  
'OPUS',  
'Hidden FAT12',  
'Compaq Diagnostic',  
'Unknown',  
'Hidden FAT16 (<32M)',  
'Unknown',  
'Hidden FAT16 (>32M)',  
'Hidden HPFS',  
'AST SWAP',  
'Willowtech',  
'Unknown',  
'Hidden FAT32',  
'Hidden FAT32 (LBA)',  
'Unknown',  
'Hidden FAT16 (LBA)',  
'Unknown',  
'Willowsoft',  
'Oxygen',  
'Oxygen Extended',  
'Reserved',  
'NEC MS-DOS 3.X',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Reserved',  
'Alien NOS',  
'Reserved',  
'Reserved',  
'OS/2 JFS',  
'Reserved',  
'Unknown',  
'Theos',  
'Plan 9',  
'Theos',  
'Theos',  
'PowerQuest Recovery',  
'Hidden Netware',  
'Unknown',  
'Unknown',  
'VENIX 80286',  
'Personal RISC',  
'SFS',  
'PTS-DOS',  
'GoBack',  
'EUMEL/Elan',  
'EUMEL/Elan',  
'EUMEL/Elan',  
'EUMEL/Elan',  
'Unknown',  
'AdaOS Aquila',  
'Unknown',  
'Oberon',  
'First QNX 4.0',  
'Second QNX 4.0',  
'Third QNX 4.0',  
'OnTrack DM',  
'NOVELL',  
'CP/M',  
'OnTrack DM',  
'OnTrack DM',  
'EZ Drive',  
'GoldenBow',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Priam Edisk',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'SpeedStor',  
'Unknown',  
'Sys V / Mach / HURD',  
'Netware 286',  
'Netware 386',  
'Unknown',  
'Novell',  
'Novell',  
'Netware NSS',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'DiskSecure',  
'Unknown',  
'Unknown',  
'Reserved',  
'Reserved',  
'PC/IX',  
'Reserved',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Minix v1.1-1.4a',  
'Linux / Minix',  
'Linux Swap',  
'Linux Native',  
'Hidden C:',  
'Linux Extended',  
'FAT16 Stripe Set',  
'NTFS Stripe Set',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Amoeba',  
'Amoeba BBT',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Phoenix Power Management',  
'Reserved',  
'Unknown',  
'Reserved',  
'Reserved',  
'FreeBSD',  
'OpenBSD',  
'NeXTStep',  
'Unknown',  
'Unknown',  
'Unknown',  
'Apple Darwin Boot',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Reserved',  
'Unknown',  
'FAT16 Mirror (Master)',  
'NTFS Mirror (Master)',  
'BSDI Swap',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'DR-DOS FAT12',  
'Unknown',  
'Unknown',  
'DR-DOS FAT16',  
'Unknown',  
'FAT16 Mirror (Slave)',  
'NTFS Mirror (Slave)',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Tiny EFAT',  
'EFAT',  
'Secured EFAT',  
'Optical EFAT',  
'Unknown',  
'Unknown',  
'CP/M-86',  
'Unknown',  
'Unknown',  
'Concurrent CP/M',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'SpeedStor FAT12',  
'Unknown',  
'Unknown',  
'SpeedStor FAT16',  
'Reserved',  
'Reserved',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'BeOS BFS-1',  
'Unknown',  
'Unknown',  
'Unknown',  
'Unknown',  
'Linux/PA-RISC',  
'Storage Dimension',  
'DOS 3.3+ Secondary',  
'SpeedStor',  
'SpeedStor',  
'Prologue',  
'SpeedStor',  
'OSG EFAT',  
'Unknown',  
'Unknown',  
'BochsX86',  
'VMware',  
'VMware Swap',  
'Linux RAID',  
'LANstep',  
'Xenix BBT');  


FileSystem device description constants FILESYS_*_DEVICE_DESCRIPTION
FILESYS_ATA_DEVICE_DESCRIPTION = 'ATA Storage Device';  
FILESYS_ATAPI_DEVICE_DESCRIPTION = 'ATAPI Storage Device';  
FILESYS_SCSI_DEVICE_DESCRIPTION = 'SCSI Storage Device';  
FILESYS_USB_DEVICE_DESCRIPTION = 'USB Storage Device';  
FILESYS_MMC_DEVICE_DESCRIPTION = 'MMC/SD Storage Device';  


FileSystem controller description constants FILESYS_*_CONTROLLER_DESCRIPTION
FILESYS_ATA_CONTROLLER_DESCRIPTION = 'ATA Storage Controller';  
FILESYS_ATAPI_CONTROLLER_DESCRIPTION = 'ATAPI Storage Controller';  
FILESYS_SCSI_CONTROLLER_DESCRIPTION = 'SCSI Storage Controller';  
FILESYS_USB_CONTROLLER_DESCRIPTION = 'USB Storage Controller';  
FILESYS_MMC_CONTROLLER_DESCRIPTION = 'MMC/SD Storage Controller';  


FileSystem logging constants FILESYS_LOG_*
FILESYS_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; FileSystem debugging messages
FILESYS_LOG_LEVEL_INFO = LOG_LEVEL_INFO; FileSystem informational messages, such as a filesystem being mounted or dismounted.
FILESYS_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; FileSystem error messages
FILESYS_LOG_LEVEL_NONE = LOG_LEVEL_NONE; No FileSystem messages


Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

procedure FileSysInit;
Description: To be documented
Note None documented


function FileSysStart:LongWord;
Description: To be documented
Note None documented


function FileSysStop:LongWord;
Description: To be documented
Note None documented


procedure FileSysAsyncStart(Data:Pointer);
Description: To be documented
Note None documented


FileSystem functions (Delphi / FreePascal RTL Equivalent)

Drive functions

function FSGetPathDrive(const APath:String):Byte; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveType(ADrive:Byte):TDriveType; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveData(ADrive:Byte):TDriveData; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveAttr(ADrive:Byte):LongWord; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveLabel(ADrive:Byte):String; inline;
Description: To be documented
Note No Volume Support


function FSSetDriveLabel(ADrive:Byte; const ALabel:String):Boolean; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveSerial(ADrive:Byte):LongWord; inline;
Description: To be documented
Note No Volume Support


function FSSetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean; inline;
Description: To be documented
Note No Volume Support


function FSIsDriveValid(ADrive:Byte):Boolean; inline;
Description: To be documented
Note No Volume Support


function FSGetValidDrives:LongWord; inline;
Description: To be documented
Note No Volume Support


function FSGetValidDriveNames:TStringList; inline;
Description: To be documented
Note No Volume Support


function FSGetValidDriveStrings:String; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveFreeSpace(ADrive:Byte):LongWord; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveFreeSpaceEx(ADrive:Byte):Int64; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveTotalSpace(ADrive:Byte):LongWord; inline;
Description: To be documented
Note No Volume Support


function FSGetDriveTotalSpaceEx(ADrive:Byte):Int64; inline;
Description: To be documented
Note No Volume Support


function FSGetCurrentDrive:Byte; inline;
Description: To be documented
Note No Volume Support


function FSSetCurrentDrive(const ADrive:String):Boolean; inline;
Description: To be documented
Note No Volume Support


File functions

function FSFileOpen(const AFileName:String; AMode:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileCreate(const AFileName:String):Integer; inline;
Description: To be documented
Note None documented


function FSDeleteFile(const AFileName:String):Boolean; inline;
Description: To be documented
Note None documented


procedure FSFileClose(AHandle:Integer); inline;
Description: To be documented
Note None documented


function FSRenameFile(const AOldName,ANewName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSFileSeek(AHandle,AOffset,AOrigin:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileFlush(AHandle:Integer):Boolean; inline;
Description: To be documented
Note None documented


function FSFileTruncate(AHandle:Integer):Boolean; inline;
Description: To be documented
Note None documented


function FSSetEndOfFile(AHandle:THandle):Boolean; inline;
Description: To be documented
Note None documented


function FSEndOfFile(AHandle:Integer):Boolean; inline;
Description: To be documented
Note None documented


function FSFilePos(AHandle:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileSize(AHandle:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileAge(const AFileName:String):Integer; inline;
Description: To be documented
Note None documented


function FSFileExists(const AFileName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSFileGetAttr(const AFileName:String):Integer; inline;
Description: To be documented
Note None documented


function FSFileGetDate(AHandle:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileSetAttr(const AFileName:String; AAttr:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileSetDate(AHandle:Integer; AAge:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileRead(AHandle:Integer; var ABuffer; ACount:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileWrite(AHandle:Integer; const ABuffer; ACount:Integer):Integer; inline;
Description: To be documented
Note None documented


Directory functions

function FSCreateDir(const ADirName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSRemoveDir(const ADirName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSRenameDir(const AOldName,ANewName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSGetCurrentDir:String; inline;
Description: To be documented
Note No Volume Support


function FSSetCurrentDir(const ADirName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSDirectoryExists(const ADirName:String):Boolean; inline;
Description: To be documented
Note None documented


procedure FSForceDirectories(ADirName:String); inline;
Description: To be documented
Note None documented


procedure FSDeleteTree(const ADirName:String); inline;
Description: To be documented
Note None documented


Search functions

function FSFindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer; inline;
Description: To be documented
Note None documented


function FSFindNext(var ASearchRec:TSearchRec):Integer; inline;
Description: To be documented
Note None documented


procedure FSFindClose(var ASearchRec:TSearchRec); inline;
Description: To be documented
Note None documented


Additional functions

function FSFileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean; inline;
Description: To be documented
Note None documented


function FSFileCopyEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean; inline;
Description: To be documented
Note None documented


function FSGetShortName(const AFileName:String):String; inline;
Description: To be documented
Note None documented


function FSGetLongName(const AFileName:String):String; inline;
Description: To be documented
Note None documented


function FSGetTrueName(const AFileName:String):String; inline;
Description: To be documented
Note None documented


Extended functions

function FSFileSeekEx(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; inline;
Description: To be documented
Note None documented


function FSEndOfFileEx(AHandle:Integer):Boolean; inline;
Description: To be documented
Note None documented


function FSFilePosEx(AHandle:Integer):Int64; inline;
Description: To be documented
Note None documented


function FSFileSizeEx(AHandle:THandle):Int64; inline;
Description: To be documented
Note None documented


function FSFileAgeEx(const AFileName:String):TFileTime; inline;
Description: To be documented
Note None documented


function FSFileGetAttrEx(AHandle:Integer):Integer; inline;
Description: To be documented
Note None documented


function FSFileGetDateEx(AHandle:Integer):TFileTime; inline;
Description: To be documented
Note None documented


function FSFileSetDateEx(AHandle:Integer; AAge:TFileTime):Integer; inline;
Description: To be documented
Note None documented


function FSGetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Description: To be documented
Note None documented


function FSSetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Description: To be documented
Note None documented


function FSFindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer; inline;
Description: To be documented
Note None documented


function FSFindNextEx(var ASearchRec:TFileSearchRec):Integer; inline;
Description: To be documented
Note None documented


procedure FSFindCloseEx(var ASearchRec:TFileSearchRec); inline;
Description: To be documented
Note None documented


FileSystem functions (Win32 Compatibility)

Drive functions

function FSDefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSGetDiskType(const ARootPath:String):LongWord; inline;
Description: Equivalent to Win32 GetDriveType
Note None documented


function FSGetDiskFreeSpace(const ARootPath:String; var ASectorsPerCluster,ABytesPerSector,ANumberOfFreeClusters,ATotalNumberOfClusters:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSGetDiskFreeSpaceEx(const APathName:String; var AFreeBytesAvailableToCaller,ATotalNumberOfBytes,ATotalNumberOfFreeBytes:Int64):Boolean; inline;
Description: To be documented
Note None documented


function FSGetLogicalDrives:LongWord; inline;
Description: To be documented
Note None documented


function FSGetLogicalDriveStrings:String; inline;
Description: To be documented
Note None documented


function FSGetVolumeInformation(const ARootPath:String; var AVolumeName:String; var AVolumeSerialNumber,AMaximumComponentLength,AFileSystemFlags:LongWord; var ASystemName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSQueryDosDevice(const ARootPath:String):String; inline;
Description: To be documented
Note None documented


function FSSetVolumeLabel(const AVolume:String; const ALabel:String):Boolean; inline;
Description: To be documented
Note None documented


File functions

function FSAreFileApisANSI:Boolean; inline;
Description: To be documented
Note None documented


function FSCloseFile(AHandle:THandle):Boolean; inline;
Description: Equivalent to Win32 CloseHandle
Note None documented


function FSCopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean; inline;
Description: To be documented
Note None documented


function FSCreateFile(const AFileName:String; AAccessMode,AShareMode,ACreateFlags,AFileAttributes:LongWord):THandle; inline;
Description: To be documented
Note None documented


function FSFindCloseFile(AHandle:THandle):Boolean; inline;
Description: Equivalent to Win32 FindClose
Note None documented


function FSFindFirstFile(const AFileName:String; var AFindData:TWin32FindData):THandle; inline;
Description: To be documented
Note None documented


function FSFindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean; inline;
Description: To be documented
Note None documented


function FSFlushFileBuffers(AHandle:THandle):Boolean; inline;
Description: To be documented
Note None documented


function FSGetFileAttributes(const AFileName:String):LongWord; inline;
Description: To be documented
Note None documented


function FSGetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord; inline;
Description: To be documented
Note None documented


function FSGetFullPathName(const AFileName:String):String; inline;
Description: To be documented
Note None documented


function FSGetShortPathName(const ALongPath:String):String; inline;
Description: To be documented
Note None documented


function FSMoveFile(const AExistingName,ANewName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSSetFileApisToANSI:Boolean; inline;
Description: To be documented
Note None documented


function FSSetFileApisToOEM:Boolean; inline;
Description: To be documented
Note None documented


function FSSetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSSetFilePointer(AHandle:THandle; ADistanceToMove:LongWord; var ADistanceToMoveHigh:LongWord; AMoveMethod:LongWord):LongWord; inline;
Description: To be documented
Note None documented


function FSSetFilePointerEx(AHandle:THandle; const ADistanceToMove:Int64; var ANewFilePointer:Int64; AMoveMethod:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSWriteFile(AHandle:THandle;const ABuffer; ABytesToWrite:LongWord; var ABytesWritten:LongWord):Boolean; inline;
Description: To be documented
Note None documented


function FSGetLongPathName(const AShortPath:String):String; inline;
Description: To be documented
Note None documented


function FSSetFileShortName(const AFileName,AShortName:String):Boolean;
Description: To be documented
Note None documented


function FSSetFileShortNameEx(AHandle:THandle; const AShortName:String):Boolean;
Description: To be documented
Note None documented


function FSCreateHardLink(const ALinkName,AFileName:String):Boolean;
Description: To be documented
Note None documented


function FSCreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean;
Description: To be documented
Note None documented


Directory functions

function FSCreateDirectory(const APathName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSGetCurrentDirectory:String; inline;
Description: To be documented
Note None documented


function FSRemoveDirectory(const APathName:String):Boolean; inline;
Description: To be documented
Note None documented


function FSSetCurrentDirectory(const APathName:String):Boolean; inline;
Description: To be documented
Note None documented


RTL FileSystem functions

System file functions

procedure SystemDoClose(Handle:THandle);
Description: To be documented
Note None documented


procedure SystemDoErase(Name:PChar; NameChangeable:Boolean);
Description: To be documented
Note None documented


procedure SystemDoRename(Name1,Name2:PChar; Name1Changeable,Name2Changeable:Boolean);
Description: To be documented
Note None documented


function SystemDoWrite(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Description: To be documented
Note None documented


function SystemDoRead(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Description: To be documented
Note None documented


function SystemDoFilePos(Handle:THandle):LongInt;
Description: To be documented
Note None documented


procedure SystemDoSeek(Handle:THandle; Pos:LongInt);
Description: To be documented
Note None documented


function SystemDoSeekEnd(Handle:THandle):LongInt;
Description: To be documented
Note None documented


function SystemDoFileSize(Handle:THandle):LongInt;
Description: To be documented
Note None documented


procedure SystemDoTruncate(Handle:THandle; Pos:LongInt);
Description: To be documented
Note None documented


procedure SystemDoOpen(var F; Name:PFileTextRecChar; Flags:LongInt; NameChangeable:Boolean);
Description: To be documented
Note FileRec and TextRec have both Handle and Mode as the first items so they could use the same routine for opening/creating.

- When (Flags and $00100) The file will be Appended
- When (Flags and $01000) The file will be Truncated/rewritten
- When (Flags and $10000) There is no check for Close (needed for TextFiles)


System directory functions

procedure SystemDoMkDir(const Dir:RawByteString);
Description: To be documented
Note None documented


procedure SystemDoRmDir(const Dir:RawByteString);
Description: To be documented
Note None documented


procedure SystemDoChDir(const Dir:RawByteString);
Description: To be documented
Note None documented


procedure SystemDoGetDir(Drive:Byte; var Dir:RawByteString);
Description: To be documented
Note None documented


Dos disk functions

function DosDiskFree(Drive:Byte):Int64;
Description: To be documented
Note No Volume Support


function DosDiskSize(Drive:Byte):Int64;
Description: To be documented
Note No Volume Support


Dos FindFirst/FindNext functions

function DosFindMatchingFile(var f:SearchRec):Integer;
Description: Internal Only
Note None documented


function DosFindFirst(const Path:PathStr; Attr:Word; var f:SearchRec):Integer;
Description: To be documented
Note FindFirst/FindNext/FindClose - To be compatible with the DOS. FindFirst/FindNext we always allow faReadOnly and faArchive but only allow other attributes if requested. This is done by matching all files and filtering with FindMatchingFile.


function DosFindNext(var f:SearchRec):Integer;
Description: To be documented
Note None documented


procedure DosFindClose(var f:SearchRec);
Description: To be documented
Note None documented


Dos file functions

function DosGetFTime(var f; var Time:LongInt):Integer;
Description: To be documented
Note None documented


function DosSetFTime(var f; Time:LongInt):Integer;
Description: To be documented
Note None documented


function DosGetFAttr(var f; var Attr:Word):Integer;
Description: To be documented
Note None documented


function DosSetFAttr(var f; Attr:Word):Integer;
Description: To be documented
Note None documented


function DosGetShortName(var p:ShortString):Boolean;
Description: To be documented
Note None documented


function DosGetLongName(var p:ShortString):Boolean;
Description: To be documented
Note None documented


SysUtils file functions

function SysUtilsFileOpen(const FileName:RawByteString; Mode:Integer):THandle;
Description: To be documented
Note None documented


function SysUtilsFileCreate(const FileName:RawByteString):THandle;
Description: To be documented
Note None documented


function SysUtilsDeleteFile(const FileName:RawByteString):Boolean;
Description: To be documented
Note None documented


procedure SysUtilsFileClose(Handle:THandle);
Description: To be documented
Note None documented


function SysUtilsRenameFile(const OldName,NewName:RawByteString):Boolean;
Description: To be documented
Note None documented


function SysUtilsFileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileTruncate(Handle:THandle;Size:Int64):Boolean;
Description: To be documented
Note None documented


function SysUtilsFileAge(const FileName:RawByteString):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileExists(const FileName:RawByteString):Boolean;
Description: To be documented
Note None documented


function SysUtilsFileGetAttr(const FileName:RawByteString):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileGetDate(Handle:THandle):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileSetAttr(const FileName:RawByteString; Attr:LongInt):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileSetDate(Handle:THandle; Age:LongInt):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileRead(Handle:THandle; out Buffer; Count:LongInt):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt;
Description: To be documented
Note None documented


function SysUtilsFileSeekEx(Handle:THandle; Offset:Int64; Origin:LongInt):Int64;
Description: To be documented
Note None documented


function SysUtilsInternalFindFirst(const Path:RawByteString; Attr:LongInt; out SearchRec:TSearchRec; var Name:RawByteString):LongInt;
Description: To be documented
Note None documented


function SysUtilsInternalFindNext(var SearchRec:TSearchRec; var Name:RawByteString):LongInt;
Description: To be documented
Note None documented


procedure SysUtilsInternalFindClose(var Handle:THandle);
Description: To be documented
Note None documented


SysUtils disk functions

function SysUtilsDiskFree(Drive:Byte):Int64;
Description: To be documented
Note No Volume Support


function SysUtilsDiskSize(Drive:Byte):Int64;
Description: To be documented
Note No Volume Support


function SysUtilsDirectoryExists(const Directory:RawByteString):Boolean;
Description: To be documented
Note None documented


FileSystem logging functions

function FileSysLoggingStart(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function FileSysLoggingStop(Logging:PLoggingDevice):LongWord;
Description: To be documented
Note None documented


function FileSysLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: To be documented
Note None documented


function FileSysLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
Description: To be documented
Note None documented


FileSystem helper functions

function FileSysStorageGetMediaType(Storage:PStorageDevice):TMediaType;
Description: To be documented
Note None documented


function FileSysStorageGetController(Storage:PStorageDevice):TDiskController;
Description: To be documented
Note None documented


procedure FileSysStorageDeviceAdd(Event:PStorageDeviceEvent);
Description: To be documented
Note None documented


procedure FileSysStorageDeviceInsert(Event:PStorageDeviceEvent);
Description: To be documented
Note None documented


function FileSysStorageDeviceRemove(Storage:PStorageDevice):LongWord;
Description: To be documented
Note None documented


function FileSysStorageDeviceEject(Storage:PStorageDevice):LongWord;
Description: To be documented
Note None documented


function FileSysStorageDeviceEnum(Storage:PStorageDevice; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function FileSysStorageDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented
Note None documented


function ComparePartitions(APartition1,APartition2:Pointer):Integer;
Description: Sort partitions in order of start sector
Note None documented


procedure FileSysLog(Level:Integer;const AText:String);
Description: To be documented
Note None documented


procedure FileSysLogInfo(const AText:String); inline;
Description: To be documented
Note None documented


procedure FileSysLogError(const AText:String); inline;
Description: To be documented
Note None documented


procedure FileSysLogDebug(const AText:String); inline;
Description: To be documented
Note None documented


procedure CacheCheckTimer(Data:Pointer);
Description: To be documented
Note None documented


procedure EntryCheckTimer(Data:Pointer);
Description: To be documented
Note None documented


procedure EntryProcessTimer(Data:Pointer);
Description: To be documented
Note None documented


function MediaTypeToString(AType:TMediaType):String;
Description: To be documented
Note None documented


function FloppyTypeToString(AType:TFloppyType):String;
Description: To be documented
Note None documented


function ImageTypeToString(AType:TImageType):String;
Description: To be documented
Note None documented


function DriveTypeToString(AType:TDriveType):String;
Description: To be documented
Note None documented


function FileSysTypeToString(AType:TFileSysType):String;
Description: To be documented
Note None documented


function StringToFileSysType(const AFileSysType:String):TFileSysType;
Description: To be documented
Note None documented


function PartitionIdToString(AId:Byte):String;
Description: To be documented
Note None documented


function StringToPartitionId(const APartitionId:String):Byte;
Description: To be documented
Note None documented


function CacheModeToString(ACacheMode:TCacheMode):String;
Description: To be documented
Note None documented


function CacheStateToString(ACacheState:TCacheState):String;
Description: To be documented
Note None documented


function CachePageTimeToDateTime(const APageTime:Int64):TDateTime;
Description: To be documented
Note None documented


Return to Unit Reference