Unit Filesystem
Return to Unit Reference
Contents
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
FILESYS_*
FILESYS_LOGGING_DESCRIPTION = 'Filesystem Logging';
|
|
FILESYS_STORAGE_TIMER_INTERVAL = 100;
|
Timer interval for device additions or insertions |
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. |
FILESYS_CACHE_*
FILESYS_CACHE_THREAD_NAME = 'Filesystem Cache';
|
Thread name for Filesystem cache threads |
FILESYS_CACHE_THREAD_PRIORITY = THREAD_PRIORITY_HIGHER;
|
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 |
FILESYS_ENTRY_*
FILESYS_ENTRY_TIMER_INTERVAL = 1000;
|
1000ms timer interval for Filesystem entries |
FILESYS_ENTRY_DELETE_TIMEOUT = 30000;
|
Filesystem entry delete timeout 30 seconds |
CACHE_TIMER_*
CACHE_TIMER_KEY_NONE = TIMER_KEY_NONE;
|
|
CACHE_TIMER_KEY_MAX = TIMER_KEY_MAX;
|
|
CACHE_TIMER_KEY_MIN = TIMER_KEY_MIN;
|
ENTRY_TIMER_KEY_*
ENTRY_TIMER_KEY_NONE = TIMER_KEY_NONE;
|
|
ENTRY_TIMER_KEY_MAX = TIMER_KEY_MAX;
|
|
ENTRY_TIMER_KEY_MIN = TIMER_KEY_MIN;
|
*_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;
|
FIND_FLAG_*
FIND_FLAG_NONE = $00000000;
|
|
FIND_FLAG_FILE_NAMES = $00000001;
|
FIND_WILDCARD_*
FIND_WILDCARD_NAME = '*.*';
|
|
FIND_WILDCARD_STREAM = '*';
|
fm*Mask
fmOpenMask = $000F;
|
|
fmShareMask = $00F0;
|
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;
|
See also faSymLink in filutilh.inc (SysUtils) |
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);
|
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) |
da*
daNone = $00000000;
|
|
daWriteable = $00000001;
|
|
daVirtual = $00000002;
|
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 |
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 |
NAME_HASH_SIZE*
NAME_HASH_SIZE = 8;
|
Used for Internal Name Hash Generation only |
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');
|
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';
|
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';
|
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_WARN = LOG_LEVEL_WARN;
|
FileSystem warning messages |
FILESYS_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
FileSystem error messages |
FILESYS_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No FileSystem messages |
Type definitions
Storage device event
PStorageDeviceEvent = ^TStorageDeviceEvent;
TStorageDeviceEvent = record
Timer:TTimerHandle;
|
|
Device:PStorageDevice;
|
Cache timer
PCacheTimerItem = ^TCacheTimerItem;
TCacheTimerItem = record
Key:Integer;
|
Ordering key for timer list |
Page:TObject;
|
The cache page referenced by this timer list item |
Prev:PCacheTimerItem;
|
Previous item in timer list |
Next:PCacheTimerItem;
|
Next item in timer list |
Entry timer
PEntryTimerItem = ^TEntryTimerItem;
TEntryTimerItem = record
Key:Integer;
|
Ordering key for timer list |
Entry:TObject;
|
The disk entry referenced by this timer list item |
Prev:PEntryTimerItem;
|
Previous item in timer list |
Media type
TMediaType = (mtUNKNOWN,mtINVALID,mtFLOPPY,mtFIXED,mtREMOVABLE,mtCDROM,mtDVD,mtOTHER);
|
Floppy type
TFloppyType = (ftUNKNOWN,ftINVALID,ft360K,ft12M,ft720K,ft144M,ft288M,ftATAPI);
|
Image type
TImageType = (itUNKNOWN,itINVALID,itMEMORY,itFILE,itDEVICE,itISO,itBOCHS,itVMWARE,itVPC,itVBOX);
|
Cache state
TCacheState = (csCLEAN,csDIRTY);
|
Cache mode
TCacheMode = (cmNONE,cmREADONLY,cmREADWRITE);
|
Cache page type
TCachePageType = (ptNONE,ptDEVICE);
|
Cache page state
TCachePageState = (psUNKNOWN,psEMPTY,psCLEAN,psDIRTY);
|
Cache page content
TCachePageContent = (pcUNKNOWN,pcDATA,pcDIRECTORY,pcENTRY,pcSYSTEM);
|
Cache statistics
PCacheStatistics = ^TCacheStatistics;
TCacheStatistics = record
Information | |
PageSize:LongWord;
|
|
PageCount:LongWord;
|
|
CacheSize:LongWord;
|
|
CacheMode:TCacheMode;
|
|
CacheState:TCacheState;
|
|
FlushTimeout:LongWord;
|
|
DiscardTimeout:LongWord;
|
|
Read/Write | |
ReadCached:Int64;
|
|
ReadDirect:Int64;
|
|
WriteBack:Int64;
|
|
WriteThrough:Int64;
|
|
WriteDirect:Int64;
|
|
Hit/Miss | |
HitCount:Int64;
|
|
MissCount:Int64;
|
|
Allocate Success/Failure | |
FailCount:Int64;
|
|
SuccessCount:Int64;
|
|
Page Flush/Discard | |
FlushCount:Int64;
|
|
DiscardCount:Int64;
|
|
UnknownCount:Int64;
|
|
Page Times | |
OldestClean:Int64;
|
|
NewestClean:Int64;
|
|
OldestDirty:Int64;
|
|
NewestDirty:Int64;
|
Search
TSearchRec = SysUtils.TRawbyteSearchRec;
TSearchRec = record
Note: TSearchRec is always defined in SysUtils | |
Time: Integer;
|
|
Size: Integer;
|
|
Attr: Integer;
|
|
Name: TFileName;
|
|
ExcludeAttr: Integer;
|
|
FindHandle: THandle;
|
|
FindData: TWin32FindData;
|
File search
TFileSearchRec = record
FindHandle:THandle;
|
|
FindData:TWin32FindData;
|
Disk search
TDiskSearchRec = record
Name:String;
|
|
MediaType:TMediaType;
|
|
FloppyType:TFloppyType;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
|
Verbose:Boolean;
|
Partition search
TPartitionSearchRec = record
Name:String;
|
|
Index:LongWord;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
|
Verbose:Boolean;
|
Volume search
TVolumeSearchRec = record
Name:String;
|
|
Attributes:LongWord;
|
|
VolumeLabel:String;
|
|
VolumeGUID:String;
|
|
VolumeSerial:LongWord;
|
|
DriveType:TDriveType;
|
|
FileSysType:TFileSysType;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
|
Verbose:Boolean;
|
Drive search
TDriveSearchRec = record
Name:String;
|
|
Attributes:LongWord;
|
|
VolumeLabel:String;
|
|
VolumeGUID:String;
|
|
VolumeSerial:LongWord;
|
|
DriveType:TDriveType;
|
|
FileSysType:TFileSysType;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
|
Verbose:Boolean;
|
Image search
TImageSearchRec = record
Name:String;
|
|
ImageNo:Integer;
|
|
ImageType:TImageType;
|
|
MediaType:TMediaType;
|
|
FloppyType:TFloppyType;
|
|
Attributes:LongWord;
|
|
SectorSize:Word;
|
|
SectorCount:Int64;
|
|
Cylinders:LongWord;
|
|
Heads:LongWord;
|
|
Sectors:LongWord;
|
|
PartitionId:Byte;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
|
Verbose:Boolean;
|
Catalog search
TCatalogSearchRec = record
Name:String;
|
|
Path:String;
|
|
CatalogNo:LongWord;
|
|
MediaType:TMediaType;
|
|
FloppyType:TFloppyType;
|
|
Attributes:LongWord;
|
|
SectorSize:Word;
|
|
SectorCount:Int64;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
Mount search
TMountSearchRec = record
Name:String;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
Junction search
TJunctionSearchRec = record
Name:String;
|
|
FindHandle:THandle;
|
|
Context:LongWord;
|
Stream search
TStreamSearchRec = record
FindHandle:THandle;
|
|
Context:Pointer;
|
|
FindData:TWin32FindStreamData;
|
Link search
TLinkSearchRec = record
Name:String;
|
|
FindHandle:THandle;
|
|
Context:Pointer;
|
FAT12/FAT16 BIOS parameter block
TBiosPB = packed record
BytesPerSector:Word;
|
512,1024,2048,4096 - Usually 512 |
SectorsPerCluster:Byte;
|
1,2,4,8,16,32,64,128 |
ReservedSectors:Word;
|
FAT12/16 - Usually 1, FAT32 - Usually 32 |
NumberOfFats:Byte;
|
Usually 2 |
RootEntryCount:Word;
|
FAT32 always 0, FAT16 usually 512 (RootEntryCount * 32 must be even multiple of BytesPerSector) |
TotalSectors16:Word;
|
Total Sectors on the drive or 0 if TotalSectors32 used |
MediaId:Byte;
|
F8 for Fixed media, F0 usually for Removable media |
SectorsPerFat16:Word;
|
FAT32 always 0, Number of Sectors per FAT |
SectorsPerTrack:Word;
|
Sectors Per Track for Int13 |
NumberOfHeads:Word;
|
Number of Header for Int13 eg 1.44MB = 2 |
HiddenSectors:LongWord;
|
Number of Hidden Sectors preceeding Partition (Only valid on Partitioned media) |
TotalSectors32:LongWord;
|
Total Sectors on the drive or 0 if TotalSectors16 used |
FAT32 BIOS parameter block
TExtBiosPB = packed record
BytesPerSector:Word;
|
512,1024,2048,4096 - Usually 512 |
SectorsPerCluster:Byte;
|
1,2,4,8,16,32,64,128 |
ReservedSectors:Word;
|
FAT12/16 - Usually 1, FAT32 - Usually 32 |
NumberOfFats:Byte;
|
Usually 2 |
RootEntryCount:Word;
|
FAT32 always 0, FAT16 usually 512 (RootEntryCount * 32 must be even multiple of BytesPerSector) |
TotalSectors16:Word;
|
Total Sectors on the drive or 0 if TotalSectors32 used |
MediaId:Byte;
|
F8 for Fixed media, F0 usually for Removable media |
SectorsPerFat16:Word;
|
FAT32 always 0, Number of Sectors per FAT |
SectorsPerTrack:Word;
|
Sectors Per Track for Int13 |
NumberOfHeads:Word;
|
Number of Header for Int13 eg 1.44MB = 2 |
HiddenSectors:LongWord;
|
Number of Hidden Sectors preceeding Partition (Only valid on Partitioned media) |
TotalSectors32:LongWord;
|
Total Sectors on the drive or 0 if TotalSectors16 used |
SectorsPerFat32:LongWord;
|
Number of Sectors per FAT |
ExtendedFlags:Word;
|
Bits 0-3 -- Zero-based number of active FAT. Only valid if mirroring.
Bits 0-3 - is disabled. Bits 4-6 - Reserved. Bit 7 - 0 means the FAT is mirrored at runtime into all FATs. Bit 7 - 1 means only one FAT is active, it is the one referenced. Bit 7 - in bits 0-3. Bits 8-15 -- Reserved. |
FileSysVersion:Word;
|
FAT32 Version (Current 0:0) |
RootCluster:LongWord;
|
Usually Cluster 2 |
FileSysInfoSector:Word;
|
Usually 1 |
BackupBootSector:Word;
|
Usually 6 |
Reserved:array[0..11] of Byte;
|
Always 0 |
NTFS BIOS parameter block
TNtfsBiosPB = packed record
BytesPerSector:Word;
|
512,1024,2048,4096 - Usually 512 |
SectorsPerCluster:Byte;
|
1,2,4,8,16,32,64,128 - Usually 8 |
ReservedSectors:Word;
|
Must always be 0 on NTFS (Win2K Volume Manager ?) |
Reserved1:array[0..2] of Byte;
|
Must always be 0 on NTFS |
Reserved2:Word;
|
Must always be 0 on NTFS |
MediaId:Byte;
|
F8 for Fixed media, F0 usually for Removable media |
Reserved3:Word;
|
Must always be 0 on NTFS |
SectorsPerTrack:Word;
|
Sectors Per Track for Int13 |
NumberOfHeads:Word;
|
Number of Header for Int13 eg 1.44MB = 2 |
HiddenSectors:LongWord;
|
Number of Hidden Sectors preceeding Partition |
Reserved4:LongWord;
|
Must always be 0 on NTFS |
Reserved5:LongWord;
|
Not used by NTFS - Usually 80008000 |
TotalSectors:Int64;
|
Total Sectors on the drive |
MFTCluster:Int64;
|
Start Cluster of $MFT |
MFTMirror:Int64;
|
Start Cluster of $MFTMirr |
ClustersPerFile:LongInt;
|
Clusters Per File Record (Can be negative) (F6 = 1024 - See Notes) |
ClustersPerIndex:LongInt;
|
Clusters Per Index Record (Can be negative) (F6 = 1024 - See Notes) |
VolumeSerial:Int64;
|
Volume Serial Number |
Checksum:LongWord;
|
Checksum (Not Used) |
Partition entry
TPartitionEntry = packed record
BootIndicator:Byte;
|
80 for active partition |
StartHead:Byte;
|
Either Bits 0-3 only or Bits 0-7 depending on BIOS |
StartSector:Byte;
|
Bits 0-5 = Sector, Bits 6-7 = Bits 8-9 of Cylinder |
StartCylinder:Byte;
|
Bits 0-7 Only, Bits 8-9 in Sector |
TypeIndicator:Byte;
|
See Table in Interrupt List and Below |
EndHead:Byte;
|
Either Bits 0-3 only or Bits 0-7 depending on BIOS |
EndSector:Byte;
|
Bits 0-5 = Sector, Bits 6-7 = Bits 8-9 of Cylinder |
EndCylinder:Byte;
|
Bits 0-7 Only, Bits 8-9 in Sector |
SectorOffset:LongWord;
|
Offset in sectors from current position to Start of Partition |
SectorCount:LongWord;
|
Size in Sectors of the Partition |
Partition table
TPartitionTable = packed record
PartitionEntry:array[MIN_PARTITION..MAX_PARTITION] of TPartitionEntry;
|
Master boot code
TMasterBootCode = array[0..445] of Byte;
|
Master boot record
PMasterBootRecord = ^TMasterBootRecord;
TMasterBootRecord = packed record
Note: Standard Master Boot Record | |
BootCode:TMasterBootCode;
|
|
PartitionTable:TPartitionTable;
|
|
Signature:Word;
|
Magic Number $AA55 |
Ext master boot code
TExtMasterBootCode = array[0..439] of Byte;
|
Ext master boot record
PExtMasterBootRecord = ^TExtMasterBootRecord;
TExtMasterBootRecord = packed record
Note: NT/2000/XP Master Boot Record | |
BootCode:TExtMasterBootCode;
|
|
DiskSignature:LongWord;
|
|
Reserved1:Word;
|
|
PartitionTable:TPartitionTable;
|
|
Signature:Word;
|
Magic Number $AA55 |
Partition record
PPartitionRecord = ^TPartitionRecord;
TPartitionRecord = packed record
Note: Similar to TMasterBootRecord | |
Dummy:array[0..445] of Byte;
|
|
PartitionTable:TPartitionTable;
|
Only first 2 ever used |
Signature:Word;
|
Magic Number $AA55 |
Disk sector
PDiskSector = ^TDiskSector;
TDiskSector = array[0..511] of Byte;
Boot sector jump
TBootSectorJump = array[0..2] of Byte;
|
Boot sector code
TBootSectorCode = array[0..447] of Byte;
|
Boot sector
PBootSector = ^TBootSector;
TBootSector = packed record
Note: FAT12/FAT16 Boot Sector | |
BootJump:TBootSectorJump;
|
JMP - EBh,??h,90h or E9h,??h,??h |
OEMName:array[0..7] of Char;
|
MSWIN4.0/MSWIN4.1/MSDOS5.0 |
BPB:TBiosPB;
|
See Above |
DriveNumber:Byte;
|
BIOS Int13 Drive No 00h, 80h, FFh etc |
Reserved1:Byte;
|
Always 00h |
BootSignature:Byte;
|
Always 29h |
VolumeSerial:LongWord;
|
Serial No (Date/Time when Formatted) |
VolumeName:array[0..10] of Char;
|
Volume Label or "NO NAME" |
SystemName:array[0..7] of Char;
|
System Type FAT12, FAT16, FAT32 etc |
BootCode:TBootSectorCode;
|
Executable Code |
Signature:Word;
|
Magic Number $AA55 |
Ext boot sector jump
TExtBootSectorJump = array[0..2] of Byte;
|
Ext boot sector code
TExtBootSectorCode = array[0..419] of Byte;
|
Ext boot sector
PExtBootSector = ^TExtBootSector;
TExtBootSector = packed record
Note: FAT32 Boot Sector | |
BootJump:TExtBootSectorJump;
|
JMP - EBh,??h,90h or E9h,??h,??h |
OEMName:array[0..7] of Char;
|
MSWIN4.1 |
BPB:TExtBiosPB;
|
See Above |
DriveNumber:Byte;
|
BIOS Int13 Drive No 00h, 80h, FFh etc |
Reserved1:Byte;
|
Always 00h |
BootSignature:Byte;
|
Always 29h |
VolumeSerial:LongWord;
|
Serial No (Date/Time when Formatted) |
VolumeName:array[0..10] of Char;
|
Volume Label or "NO NAME" |
SystemName:array[0..7] of Char;
|
System Type FAT12, FAT16, FAT32 etc |
BootCode:TExtBootSectorCode;
|
Executable Code |
Signature:Word;
|
Magic Number $AA55 |
NTFS boot sector jump
TNtfsBootSectorJump = array[0..2] of Byte;
|
NTFS boot sector code
TNtfsBootSectorCode = array[0..425] of Byte;
|
NTFS boot sector
PNtfsBootSector = ^TNtfsBootSector;
TNtfsBootSector = packed record
Note: NTFS Boot Sector | |
BootJump:TNtfsBootSectorJump;
|
JMP - EBh,??h,90h |
OEMName:array[0..7] of Char;
|
Always NTFS |
BPB:TNtfsBiosPB;
|
See Above (73 Bytes BPB and ExtBPB) |
BootCode:TNtfsBootSectorCode;
|
Executable Code |
Signature:Word;
|
Magic Number $AA55 |
EXTFS boot sector
PExtfsBootSector = ^TExtfsBootSector;
TExtfsBootSector = packed record
Note: EXTFS Boot Sector | |
FileSystem logging
PFileSysLogging = ^TFileSysLogging;
TFileSysLogging = record
Logging Properties | |
Logging:TLoggingDevice;
|
Class definitions
FileSystem specific classes
TFileSysDriver = class(TObject)
|
TFileSysList = class(TLinkedObjList)
|
TFileSysListEx = class(TLinkedObjList)
|
TFileSysTree = class(TLinkedObjTree)
|
TDiskDrive = class(TListObject)
|
TRawHandle = class(TListObject)
|
TEnumHandle = class(TListObject)
|
TFileHandle = class(TListObject)
|
TFindHandle = class(TListObject)
|
TDiskController = class(TListObject)
|
TDiskDevice = class(TListObject)
|
TDiskPartition = class(TListObject)
|
TDiskVolume = class(TListObject)
|
TDiskImage = class(TListObject)
|
TRecognizer = class(TListObject)
|
TRedirector = class(TListObject)
|
TDiskPartitioner = class(TObject)
|
TDiskFormatter = class(TObject)
|
TDiskDefragger = class(TObject)
|
TDiskConverter = class(TObject)
|
TDiskRepairer = class(TObject)
|
TDiskResizer = class(TObject)
|
TDiskCopier = class(TObject)
|
TDiskImager = class(TObject)
|
TFileSystem = class(TListObject)
|
TDiskChunk = class(TListObject)
|
TDiskTable = class(TListObject)
|
TDiskBlock = class(TListObject)
|
TDiskEntry = class(TTreeObject)
|
TDiskCatalog = class(TListObject)
|
TDiskReparse = class(TObject)
|
TDiskSecurity = class(TObject)
|
TDiskAcl = class(TListObject)
|
TDiskAce = class(TListObject)
|
TCache = class(TObject)
|
TCacheEx = class(TCache)
|
THashCache = class(TObject)
|
TIncrementalCache = class(TObject)
|
TCachePage = class(TObject)
|
THashCachePage = class(TCachePage)
|
TIncrementalCachePage = class(THashCachePage)
|
TCacheTimer = class(TObject)
|
THashCacheTimer = class(TObject)
|
TIncrementalCacheTimer = class(TObject)
|
TCacheThread = class(TThread)
|
THashCacheThread = class(TThread)
|
TIncrementalCacheThread = class(TThread)
|
TEntryTimer = class(TObject)
|
TDefaultRecognizer = class(TRecognizer)
|
TDefaultPartitioner = class(TDiskPartitioner)
|
TExtDiskController = class(TDiskController)
|
TATADiskController = class(TDiskController)
|
TATAPIDiskController = class(TDiskController)
|
TSCSIDiskController = class(TDiskController)
|
TUSBDiskController = class(TExtDiskController)
|
TMMCDiskController = class(TExtDiskController)
|
FileSystem advanced classes
TFSHandleStream = class(TStream)
|
TFSFileStream = class(TFSHandleStream)
|
TFSHandleStreamEx = class(TStreamEx)
|
TFSFileStreamEx = class(TFSHandleStreamEx)
|
Public variables
FileSystem logging
FILESYS_DEFAULT_LOG_LEVEL:LongWord = FILESYS_LOG_LEVEL_DEBUG;
|
Minimum level for FileSystem messages. Only messages with level greater than or equal to this will be printed. |
FILESYS_LOG_ENABLED:Boolean;
|
FileSystem specific variables
FileSysDriver:TFileSysDriver;
|
Function declarations
Initialization functions
procedure FileSysInit;
Note | None documented |
---|
function FileSysStart:LongWord;
Note | None documented |
---|
function FileSysStop:LongWord;
Note | None documented |
---|
function FileSysStartCompleted:Boolean;
Note | None documented |
---|
procedure FileSysAsyncStart(Data:Pointer);
Note | None documented |
---|
FileSystem functions (Delphi/FreePascal RTL Equivalent)
Drive functions
function FSGetPathDrive(const APath:String):Byte; inline;
Note | No Volume Support |
---|
function FSGetDriveType(ADrive:Byte):TDriveType; inline;
Note | No Volume Support |
---|
function FSGetDriveData(ADrive:Byte):TDriveData; inline;
Note | No Volume Support |
---|
function FSGetDriveAttr(ADrive:Byte):LongWord; inline;
Note | No Volume Support |
---|
function FSGetDriveLabel(ADrive:Byte):String; inline;
Note | No Volume Support |
---|
function FSSetDriveLabel(ADrive:Byte; const ALabel:String):Boolean; inline;
Note | No Volume Support |
---|
function FSGetDriveSerial(ADrive:Byte):LongWord; inline;
Note | No Volume Support |
---|
function FSSetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean; inline;
Note | No Volume Support |
---|
function FSIsDriveValid(ADrive:Byte):Boolean; inline;
Note | No Volume Support |
---|
function FSGetValidDrives:LongWord; inline;
Note | No Volume Support |
---|
function FSGetValidDriveNames:TStringList; inline;
Note | No Volume Support |
---|
function FSGetValidDriveStrings:String; inline;
Note | No Volume Support |
---|
function FSGetDriveFreeSpace(ADrive:Byte):LongWord; inline;
Note | No Volume Support |
---|
function FSGetDriveFreeSpaceEx(ADrive:Byte):Int64; inline;
Note | No Volume Support |
---|
function FSGetDriveTotalSpace(ADrive:Byte):LongWord; inline;
Note | No Volume Support |
---|
function FSGetDriveTotalSpaceEx(ADrive:Byte):Int64; inline;
Note | No Volume Support |
---|
function FSGetDriveInformation(const APath:String; var AClusterSize:LongWord; var ATotalClusterCount,AFreeClusterCount:Int64):Boolean; inline;
Note | None documented |
---|
function FSGetCurrentDrive:Byte; inline;
Note | No Volume Support |
---|
function FSSetCurrentDrive(const ADrive:String):Boolean; inline;
Note | No Volume Support |
---|
File functions
function FSFileOpen(const AFileName:String; AMode:Integer):THandle; inline;
Note | None documented |
---|
function FSFileCreate(const AFileName:String):THandle; inline;
Note | None documented |
---|
function FSDeleteFile(const AFileName:String):Boolean; inline;
Note | None documented |
---|
procedure FSFileClose(AHandle:Integer); inline;
Note | None documented |
---|
function FSRenameFile(const AOldName,ANewName:String):Boolean; inline;
Note | None documented |
---|
function FSFileSeek(AHandle:THandle; AOffset,AOrigin:LongInt):LongInt; inline;
Note | None documented |
---|
function FSFileFlush(AHandle:Integer):Boolean; inline;
Note | None documented |
---|
function FSFileTruncate(AHandle:Integer):Boolean; inline;
Note | None documented |
---|
function FSSetEndOfFile(AHandle:THandle):Boolean; inline;
Note | None documented |
---|
function FSEndOfFile(AHandle:Integer):Boolean; inline;
Note | None documented |
---|
function FSFilePos(AHandle:THandle):LongInt; inline;
Note | None documented |
---|
function FSFileSize(AHandle:THandle):LongInt; inline;
Note | None documented |
---|
function FSFileAge(const AFileName:String):Integer; inline;
Note | None documented |
---|
function FSFileExists(const AFileName:String):Boolean; inline;
Note | None documented |
---|
function FSFileGetAttr(const AFileName:String):Integer; inline;
Note | None documented |
---|
function FSFileGetDate(AHandle:Integer):Integer; inline;
Note | None documented |
---|
function FSFileSetAttr(const AFileName:String; AAttr:Integer):Integer; inline;
Note | None documented |
---|
function FSFileSetDate(AHandle:Integer; AAge:Integer):Integer; inline;
Note | None documented |
---|
function FSFileRead(AHandle:THandle; var ABuffer; ACount:LongInt):LongInt; inline;
Note | None documented |
---|
function FSFileWrite(AHandle:THandle; const ABuffer; ACount:LongInt):LongInt; inline;
Note | None documented |
---|
Directory functions
function FSCreateDir(const ADirName:String):Boolean; inline;
Note | None documented |
---|
function FSRemoveDir(const ADirName:String):Boolean; inline;
Note | None documented |
---|
function FSRenameDir(const AOldName,ANewName:String):Boolean; inline;
Note | None documented |
---|
function FSGetCurrentDir:String; inline;
Note | No Volume Support |
---|
function FSSetCurrentDir(const ADirName:String):Boolean; inline;
Note | None documented |
---|
function FSDirectoryExists(const ADirName:String):Boolean; inline;
Note | None documented |
---|
procedure FSForceDirectories(ADirName:String); inline;
Note | None documented |
---|
procedure FSDeleteTree(const ADirName:String); inline;
Note | None documented |
---|
Search functions
function FSFindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer; inline;
Note | None documented |
---|
function FSFindNext(var ASearchRec:TSearchRec):Integer; inline;
Note | None documented |
---|
procedure FSFindClose(var ASearchRec:TSearchRec); inline;
Note | None documented |
---|
Additional functions
function FSFileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean; inline;
Note | None documented |
---|
function FSFileCopyEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean; inline;
Note | None documented |
---|
function FSGetShortName(const AFileName:String):String; inline;
Note | None documented |
---|
function FSGetLongName(const AFileName:String):String; inline;
Note | None documented |
---|
function FSGetTrueName(const AFileName:String):String; inline;
Note | None documented |
---|
Extended functions
function FSFileSeekEx(AHandle:THandle; const AOffset:Int64; AOrigin:LongInt):Int64; inline;
Note | None documented |
---|
function FSEndOfFileEx(AHandle:Integer):Boolean; inline;
Note | None documented |
---|
function FSFilePosEx(AHandle:THandle):Int64; inline;
Note | None documented |
---|
function FSFileSizeEx(AHandle:THandle):Int64; inline;
Note | None documented |
---|
function FSFileAgeEx(const AFileName:String):TFileTime; inline;
Note | None documented |
---|
function FSFileGetAttrEx(AHandle:Integer):Integer; inline;
Note | None documented |
---|
function FSFileGetDateEx(AHandle:Integer):TFileTime; inline;
Note | None documented |
---|
function FSFileSetDateEx(AHandle:Integer; AAge:TFileTime):Integer; inline;
Note | None documented |
---|
function FSGetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Note | None documented |
---|
function FSSetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Note | None documented |
---|
function FSFindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer; inline;
Note | None documented |
---|
function FSFindNextEx(var ASearchRec:TFileSearchRec):Integer; inline;
Note | None documented |
---|
procedure FSFindCloseEx(var ASearchRec:TFileSearchRec); inline;
Note | None documented |
---|
FileSystem functions (Win32 Compatibility)
Drive functions
function FSDefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean; inline;
Note | None documented |
---|
function FSGetDiskType(const ARootPath:String):LongWord; inline;
Note | None documented |
---|
function FSGetDiskFreeSpace(const ARootPath:String; var ASectorsPerCluster,ABytesPerSector,ANumberOfFreeClusters,ATotalNumberOfClusters:LongWord):Boolean; inline;
Note | None documented |
---|
function FSGetDiskFreeSpaceEx(const APathName:String; var AFreeBytesAvailableToCaller,ATotalNumberOfBytes,ATotalNumberOfFreeBytes:QWord):Boolean; inline;
Note | None documented |
---|
function FSGetLogicalDrives:LongWord; inline;
Note | None documented |
---|
function FSGetLogicalDriveStrings:String; inline;
Note | None documented |
---|
function FSGetVolumeInformation(const ARootPath:String; var AVolumeName:String; var AVolumeSerialNumber,AMaximumComponentLength,AFileSystemFlags:LongWord; var ASystemName:String):Boolean; inline;
Note | None documented |
---|
function FSQueryDosDevice(const ARootPath:String):String; inline;
Note | None documented |
---|
function FSSetVolumeLabel(const AVolume:String; const ALabel:String):Boolean; inline;
Note | None documented |
---|
File functions
function FSAreFileApisANSI:Boolean; inline;
Note | None documented |
---|
function FSCloseFile(AHandle:THandle):Boolean; inline;
Note | None documented |
---|
function FSCopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean; inline;
Note | None documented |
---|
function FSCreateFile(const AFileName:String; AAccessMode,AShareMode,ACreateFlags,AFileAttributes:LongWord):THandle; inline;
Note | None documented |
---|
function FSFindCloseFile(AHandle:THandle):Boolean; inline;
Note | None documented |
---|
function FSFindFirstFile(const AFileName:String; var AFindData:TWin32FindData):THandle; inline;
Note | None documented |
---|
function FSFindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean; inline;
Note | None documented |
---|
function FSFlushFileBuffers(AHandle:THandle):Boolean; inline;
Note | None documented |
---|
function FSGetFileAttributes(const AFileName:String):LongWord; inline;
Note | None documented |
---|
function FSGetFileInformationByHandle(AHandle:THandle; var AFileInformation:TByHandleFileInformation):Boolean; inline;
Note | None documented |
---|
function FSGetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord; inline;
Note | None documented |
---|
function FSGetFullPathName(const AFileName:String):String; inline;
Note | None documented |
---|
function FSGetShortPathName(const ALongPath:String):String; inline;
Note | None documented |
---|
function FSMoveFile(const AExistingName,ANewName:String):Boolean; inline;
Note | None documented |
---|
function FSReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean; inline;
Note | None documented |
---|
function FSSetFileApisToANSI:Boolean; inline;
Note | None documented |
---|
function FSSetFileApisToOEM:Boolean; inline;
Note | None documented |
---|
function FSSetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean; inline;
Note | None documented |
---|
function FSSetFilePointer(AHandle:THandle; ADistanceToMove:LongInt; var ADistanceToMoveHigh:LongInt; AMoveMethod:LongWord):LongWord; inline;
Note | None documented |
---|
function FSSetFilePointerEx(AHandle:THandle; const ADistanceToMove:Int64; var ANewFilePointer:Int64; AMoveMethod:LongWord):Boolean; inline;
Note | None documented |
---|
function FSWriteFile(AHandle:THandle;const ABuffer; ABytesToWrite:LongWord; var ABytesWritten:LongWord):Boolean; inline;
Note | None documented |
---|
function FSGetLongPathName(const AShortPath:String):String; inline;
Note | None documented |
---|
function FSSetFileShortName(const AFileName,AShortName:String):Boolean; inline;
Note | None documented |
---|
function FSSetFileShortNameEx(AHandle:THandle; const AShortName:String):Boolean; inline;
Note | None documented |
---|
function FSCreateHardLink(const ALinkName,AFileName:String):Boolean; inline;
Note | None documented |
---|
function FSCreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean; inline;
Note | None documented |
---|
Directory functions
function FSCreateDirectory(const APathName:String):Boolean; inline;
Note | None documented |
---|
function FSGetCurrentDirectory:String; inline;
Note | None documented |
---|
function FSRemoveDirectory(const APathName:String):Boolean; inline;
Note | None documented |
---|
function FSSetCurrentDirectory(const APathName:String):Boolean; inline;
Note | None documented |
---|
RTL text IO functions
function SysTextIOReadChar(var ACh:Char; AUserData:Pointer):Boolean;
Note | Not intended to be called directly by applications |
---|
function SysTextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean;
Note | Not intended to be called directly by applications |
---|
function SysTextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;
Note | Not intended to be called directly by applications |
---|
RTL FileSystem functions
System file functions
procedure SystemDoClose(Handle:THandle);
Note | None documented |
---|
procedure SystemDoErase(Name:PChar; NameChangeable:Boolean);
Note | None documented |
---|
procedure SystemDoRename(Name1,Name2:PChar; Name1Changeable,Name2Changeable:Boolean);
Note | None documented |
---|
function SystemDoWrite(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Note | None documented |
---|
function SystemDoRead(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Note | None documented |
---|
function SystemDoFilePos(Handle:THandle):LongInt;
Note | None documented |
---|
procedure SystemDoSeek(Handle:THandle; Pos:LongInt);
Note | None documented |
---|
function SystemDoSeekEnd(Handle:THandle):LongInt;
Note | None documented |
---|
function SystemDoFileSize(Handle:THandle):LongInt;
Note | None documented |
---|
procedure SystemDoTruncate(Handle:THandle; Pos:LongInt);
Note | None documented |
---|
procedure SystemDoOpen(var F; Name:PFileTextRecChar; Flags:LongInt; NameChangeable:Boolean);
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
|
---|
System directory functions
procedure SystemDoMkDir(const Dir:RawByteString);
Note | None documented |
---|
procedure SystemDoRmDir(const Dir:RawByteString);
Note | None documented |
---|
procedure SystemDoChDir(const Dir:RawByteString);
Note | None documented |
---|
procedure SystemDoGetDir(Drive:Byte; var Dir:RawByteString);
Note | None documented |
---|
Dos disk functions
function DosDiskFree(Drive:Byte):Int64;
Note | No Volume Support |
---|
function DosDiskSize(Drive:Byte):Int64;
Note | No Volume Support |
---|
Dos FindFirst/FindNext functions
function DosFindMatchingFile(var f:SearchRec):Integer;
Note | None documented |
---|
function DosFindFirst(const Path:PathStr; Attr:Word; var f:SearchRec):Integer;
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;
Note | None documented |
---|
procedure DosFindClose(var f:SearchRec);
Note | None documented |
---|
Dos file functions
function DosGetFTime(var f; var Time:LongInt):Integer;
Note | None documented |
---|
function DosSetFTime(var f; Time:LongInt):Integer;
Note | None documented |
---|
function DosGetFAttr(var f; var Attr:Word):Integer;
Note | None documented |
---|
function DosSetFAttr(var f; Attr:Word):Integer;
Note | None documented |
---|
function DosGetShortName(var p:ShortString):Boolean;
Note | None documented |
---|
function DosGetLongName(var p:ShortString):Boolean;
Note | None documented |
---|
SysUtils file functions
function SysUtilsFileOpen(const FileName:RawByteString; Mode:Integer):THandle;
Note | None documented |
---|
function SysUtilsFileCreate(const FileName:RawByteString; ShareMode:Integer):THandle;
Note | None documented |
---|
function SysUtilsDeleteFile(const FileName:RawByteString):Boolean;
Note | None documented |
---|
procedure SysUtilsFileClose(Handle:THandle);
Note | None documented |
---|
function SysUtilsRenameFile(const OldName,NewName:RawByteString):Boolean;
Note | None documented |
---|
function SysUtilsFileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt;
Note | None documented |
---|
function SysUtilsFileTruncate(Handle:THandle;Size:Int64):Boolean;
Note | None documented |
---|
function SysUtilsFileAge(const FileName:RawByteString):LongInt;
Note | None documented |
---|
function SysUtilsFileExists(const FileName:RawByteString; FollowLink:Boolean):Boolean;
Note | None documented |
---|
function SysUtilsFileGetAttr(const FileName:RawByteString):LongInt;
Note | None documented |
---|
function SysUtilsFileGetDate(Handle:THandle):LongInt;
Note | None documented |
---|
function SysUtilsFileSetAttr(const FileName:RawByteString; Attr:LongInt):LongInt;
Note | None documented |
---|
function SysUtilsFileSetDate(Handle:THandle; Age:LongInt):LongInt;
Note | None documented |
---|
function SysUtilsFileRead(Handle:THandle; out Buffer; Count:LongInt):LongInt;
Note | None documented |
---|
function SysUtilsFileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt;
Note | None documented |
---|
function SysUtilsFileSeekEx(Handle:THandle; Offset:Int64; Origin:LongInt):Int64;
Note | None documented |
---|
function SysUtilsInternalFindFirst(const Path:RawByteString; Attr:LongInt; out SearchRec:TSearchRec; var Name:RawByteString):LongInt;
Note | None documented |
---|
function SysUtilsInternalFindNext(var SearchRec:TSearchRec; var Name:RawByteString):LongInt;
Note | None documented |
---|
procedure SysUtilsInternalFindClose(var Handle:THandle);
Note | None documented |
---|
SysUtils disk functions
function SysUtilsDiskFree(Drive:Byte):Int64;
Note | No Volume Support |
---|
function SysUtilsDiskSize(Drive:Byte):Int64;
Note | No Volume Support |
---|
function SysUtilsDirectoryExists(const Directory:RawByteString; FollowLink:Boolean):Boolean;
Note | None documented |
---|
FileSystem logging functions
function FileSysLoggingStart(Logging:PLoggingDevice):LongWord;
Note | Not intended to be called directly by applications, use LoggingDeviceStart instead. |
---|
function FileSysLoggingStop(Logging:PLoggingDevice):LongWord;
Note | Not intended to be called directly by applications, use LoggingDeviceStop instead. |
---|
function FileSysLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Note | Not intended to be called directly by applications, use LoggingDeviceOutput instead. |
---|
function FileSysLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
Note | Not intended to be called directly by applications, use LoggingDeviceSetTarget instead. |
---|
FileSystem helper functions
function FileSysRedirectInput(Handle:THandle):Boolean;
Handle | The file handle to redirect input to (or INVALID_HANDLE_VALUE to stop redirection) |
---|---|
Return | True if completed successfully or False if an error occurred |
Note | Redirects the input of the text file Input which also redirects the input of Read, ReadLn and the standard C library. |
function FileSysRedirectOutput(Handle:THandle):Boolean;
Handle | The file handle to redirect output to (or INVALID_HANDLE_VALUE to stop redirection) |
---|---|
Return | True if completed successfully or False if an error occurred |
Note | Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library. |
function FileSysStorageGetMediaType(Storage:PStorageDevice):TMediaType;
Note | None documented |
---|
function FileSysStorageGetController(Storage:PStorageDevice):TDiskController;
Note | None documented |
---|
procedure FileSysStorageDeviceAdd(Event:PStorageDeviceEvent);
Note | None documented |
---|
procedure FileSysStorageDeviceInsert(Event:PStorageDeviceEvent);
Note | None documented |
---|
function FileSysStorageDeviceRemove(Storage:PStorageDevice):LongWord;
Note | None documented |
---|
function FileSysStorageDeviceEject(Storage:PStorageDevice):LongWord;
Note | None documented |
---|
function FileSysStorageDeviceEnum(Storage:PStorageDevice; Data:Pointer):LongWord;
Note | None documented |
---|
function FileSysStorageDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Note | None documented |
---|
function ComparePartitions(APartition1,APartition2:Pointer):Integer;
Note | None documented |
---|
procedure FileSysLog(Level:Integer;const AText:String);
Note | None documented |
---|
procedure FileSysLogInfo(const AText:String); inline;
Note | None documented |
---|
procedure FileSysLogWarn(const AText:String); inline;
Note | None documented |
---|
procedure FileSysLogError(const AText:String); inline;
Note | None documented |
---|
procedure FileSysLogDebug(const AText:String); inline;
Note | None documented |
---|
procedure CacheCheckTimer(Data:Pointer);
Note | None documented |
---|
procedure EntryCheckTimer(Data:Pointer);
Note | None documented |
---|
procedure EntryProcessTimer(Data:Pointer);
Note | None documented |
---|
function MediaTypeToString(AType:TMediaType):String;
Note | None documented |
---|
function FloppyTypeToString(AType:TFloppyType):String;
Note | None documented |
---|
function ImageTypeToString(AType:TImageType):String;
Note | None documented |
---|
function DriveTypeToString(AType:TDriveType):String;
Note | None documented |
---|
function FileSysTypeToString(AType:TFileSysType):String;
Note | None documented |
---|
function StringToFileSysType(const AFileSysType:String):TFileSysType;
Note | None documented |
---|
function PartitionIdToString(AId:Byte):String;
Note | None documented |
---|
function StringToPartitionId(const APartitionId:String):Byte;
Note | None documented |
---|
function CacheModeToString(ACacheMode:TCacheMode):String;
Note | None documented |
---|
function CacheStateToString(ACacheState:TCacheState):String;
Note | None documented |
---|
function CachePageTimeToDateTime(const APageTime:Int64):TDateTime;
Note | None documented |
---|
Return to Unit Reference