Difference between revisions of "Unit Filesystem"

From Ultibo.org
Jump to: navigation, search
Line 2,259: Line 2,259:
  
 
=== Type definitions ===
 
=== Type definitions ===
 +
----
 +
 +
 +
'''Storage device event'''
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PStorageDeviceEvent = ^TStorageDeviceEvent;</code>
 +
 +
<code>TStorageDeviceEvent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Timer:TTimerHandle;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Device:PStorageDevice;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Cache timer'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCacheTimerItem = ^TCacheTimerItem;</code>
 +
 +
<code>TCacheTimerItem = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Key:Integer;</code>
 +
| Ordering key for timer list
 +
|-
 +
| <code>Page:TObject;</code>
 +
| The cache page referenced by this timer list item
 +
|-
 +
| <code>Prev:PCacheTimerItem;</code>
 +
| Previous item in timer list
 +
|-
 +
| <code>Next:PCacheTimerItem;</code>
 +
| Next item in timer list
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Entry timer'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PEntryTimerItem = ^TEntryTimerItem;</code>
 +
 +
<code>TEntryTimerItem = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Key:Integer;</code>
 +
| Ordering key for timer list
 +
|-
 +
| <code>Entry:TObject;</code>
 +
| The disk entry referenced by this timer list item
 +
|-
 +
| <code>Prev:PEntryTimerItem;</code>
 +
| Previous item in timer list
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Media type'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMediaType = (mtUNKNOWN,mtINVALID,mtFLOPPY,mtFIXED,mtREMOVABLE,mtCDROM,mtDVD,mtOTHER);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Floppy type'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TFloppyType = (ftUNKNOWN,ftINVALID,ft360K,ft12M,ft720K,ft144M,ft288M,ftATAPI);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Image type'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TImageType = (itUNKNOWN,itINVALID,itMEMORY,itFILE,itDEVICE,itISO,itBOCHS,itVMWARE,itVPC,itVBOX);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache state'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCacheState = (csCLEAN,csDIRTY);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache mode'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCacheMode = (cmNONE,cmREADONLY,cmREADWRITE);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache page type'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCachePageType = (ptNONE,ptDEVICE);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache page state'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCachePageState = (psUNKNOWN,psEMPTY,psCLEAN,psDIRTY);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache page content'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCachePageContent = (pcUNKNOWN,pcDATA,pcDIRECTORY,pcENTRY,pcSYSTEM);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Cache statistics'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCacheStatistics = ^TCacheStatistics;</code>
 +
 +
<code>TCacheStatistics = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Information''
 +
|-
 +
| <code>PageSize:LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>PageCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CacheSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CacheMode:TCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CacheState:TCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FlushTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DiscardTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Read / Write''
 +
|-
 +
| <code>ReadCached:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ReadDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WriteBack:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WriteThrough:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WriteDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Hit / Miss''
 +
|-
 +
| <code>HitCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MissCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Allocate Success / Failure''
 +
|-
 +
| <code>FailCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SuccessCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Page Flush / Discard''
 +
|-
 +
| <code>FlushCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DiscardCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>UnknownCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Page Times''
 +
|-
 +
| <code>OldestClean:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NewestClean:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>OldestDirty:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NewestDirty:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSearchRec = SysUtils.TRawbyteSearchRec;</code>
 +
 +
<code>TSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: TSearchRec is always defined in SysUtils
 +
|-
 +
| <code>Time: Integer;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Size: Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Attr: Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Name: TFileName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ExcludeAttr: Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle: THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindData: TWin32FindData;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''File search types'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TFileSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FindData:TWin32FindData;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Disk search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TDiskSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>MediaType:TMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FloppyType:TFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Verbose:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Partition search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TPartitionSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Index:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Verbose:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Volume search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TVolumeSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Attributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeLabel:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeGUID:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeSerial:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DriveType:TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Verbose:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Drive search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TDriveSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Attributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeLabel:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeGUID:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeSerial:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DriveType:TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Verbose:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Image search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TImageSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ImageNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ImageType:TImageType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MediaType:TMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FloppyType:TFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Attributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SectorCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Cylinders:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Heads:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Sectors:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PartitionId:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Verbose:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Catalog search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TCatalogSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Path:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CatalogNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MediaType:TMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FloppyType:TFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Attributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SectorCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Mount search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TMountSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Junction search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TJunctionSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Stream search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TStreamSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Context:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FindData:TWin32FindStreamData;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Link search'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TLinkSearchRec = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Name:String;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FindHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''FAT12/FAT16 BIOS parameter block'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TBiosPB = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>BytesPerSector:Word;</code>
 +
| 512,1024,2048,4096 - Usually 512
 +
|-
 +
| <code>SectorsPerCluster:Byte;</code>
 +
| 1,2,4,8,16,32,64,128
 +
|-
 +
| <code>ReservedSectors:Word;</code>
 +
| FAT12/16 - Usually 1, FAT32 - Usually 32
 +
|-
 +
| <code>NumberOfFats:Byte;</code>
 +
| Usually 2
 +
|-
 +
| <code>RootEntryCount:Word;</code>
 +
| FAT32 always 0, FAT16 usually 512 (RootEntryCount * 32 must be even multiple of BytesPerSector)
 +
|-
 +
| <code>TotalSectors16:Word;</code>
 +
| Total Sectors on the drive or 0 if TotalSectors32 used
 +
|-
 +
| <code>MediaId:Byte;</code>
 +
| F8 for Fixed media, F0 usually for Removable media
 +
|-
 +
| <code>SectorsPerFat16:Word;</code>
 +
| FAT32 always 0, Number of Sectors per FAT
 +
|-
 +
| <code>SectorsPerTrack:Word;</code>
 +
| Sectors Per Track for Int13
 +
|-
 +
| <code>NumberOfHeads:Word;</code>
 +
| Number of Header for Int13 eg 1.44MB = 2
 +
|-
 +
| <code>HiddenSectors:LongWord;</code>
 +
| Number of Hidden Sectors preceeding Partition (Only valid on Partitioned media)
 +
|-
 +
| <code>TotalSectors32:LongWord;</code>
 +
| Total Sectors on the drive or 0 if TotalSectors16 used
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''FAT32 BIOS parameter block'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TExtBiosPB = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>BytesPerSector:Word;</code>
 +
| 512,1024,2048,4096 - Usually 512
 +
|-
 +
| <code>SectorsPerCluster:Byte;</code>
 +
| 1,2,4,8,16,32,64,128
 +
|-
 +
| <code>ReservedSectors:Word;</code>
 +
| FAT12/16 - Usually 1, FAT32 - Usually 32
 +
|-
 +
| <code>NumberOfFats:Byte;</code>
 +
| Usually 2
 +
|-
 +
| <code>RootEntryCount:Word;</code>
 +
| FAT32 always 0, FAT16 usually 512 (RootEntryCount * 32 must be even multiple of BytesPerSector)
 +
|-
 +
| <code>TotalSectors16:Word;</code>
 +
| Total Sectors on the drive or 0 if TotalSectors32 used
 +
|-
 +
| <code>MediaId:Byte;</code>
 +
| F8 for Fixed media, F0 usually for Removable media
 +
|-
 +
| <code>SectorsPerFat16:Word;</code>
 +
| FAT32 always 0, Number of Sectors per FAT
 +
|-
 +
| <code>SectorsPerTrack:Word;</code>
 +
| Sectors Per Track for Int13
 +
|-
 +
| <code>NumberOfHeads:Word;</code>
 +
| Number of Header for Int13 eg 1.44MB = 2
 +
|-
 +
| <code>HiddenSectors:LongWord;</code>
 +
| Number of Hidden Sectors preceeding Partition (Only valid on Partitioned media)
 +
|-
 +
| <code>TotalSectors32:LongWord;</code>
 +
| Total Sectors on the drive or 0 if TotalSectors16 used
 +
|-
 +
| <code>SectorsPerFat32:LongWord;</code>
 +
| Number of Sectors per FAT
 +
|-
 +
| <code>ExtendedFlags:Word;</code>
 +
| 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.
 +
|-
 +
| <code>FileSysVersion:Word;</code>
 +
| FAT32 Version (Current 0:0)
 +
|-
 +
| <code>RootCluster:LongWord;</code>
 +
| Usually Cluster 2
 +
|-
 +
| <code>FileSysInfoSector:Word;</code>
 +
| Usually 1
 +
|-
 +
| <code>BackupBootSector:Word;</code>
 +
| Usually 6
 +
|-
 +
| <code>Reserved:array[0..11] of Byte;</code>
 +
| Always 0
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''NTFS BIOS parameter block'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TNtfsBiosPB = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>BytesPerSector:Word;</code>
 +
| 512,1024,2048,4096 - Usually 512
 +
|-
 +
| <code>SectorsPerCluster:Byte;</code>
 +
| 1,2,4,8,16,32,64,128 - Usually 8
 +
|-
 +
| <code>ReservedSectors:Word;</code>
 +
| Must always be 0 on NTFS (Win2K Volume Manager ?)
 +
|-
 +
| <code>Reserved1:array[0..2] of Byte;</code>
 +
| Must always be 0 on NTFS
 +
|-
 +
| <code>Reserved2:Word;</code>
 +
| Must always be 0 on NTFS
 +
|-
 +
| <code>MediaId:Byte;</code>
 +
| F8 for Fixed media, F0 usually for Removable media
 +
|-
 +
| <code>Reserved3:Word;</code>
 +
| Must always be 0 on NTFS
 +
|-
 +
| <code>SectorsPerTrack:Word;</code>
 +
| Sectors Per Track for Int13
 +
|-
 +
| <code>NumberOfHeads:Word;</code>
 +
| Number of Header for Int13 eg 1.44MB = 2
 +
|-
 +
| <code>HiddenSectors:LongWord;</code>
 +
| Number of Hidden Sectors preceeding Partition
 +
|-
 +
| <code>Reserved4:LongWord;</code>
 +
| Must always be 0 on NTFS
 +
|-
 +
| <code>Reserved5:LongWord;</code>
 +
| Not used by NTFS - Usually 80008000
 +
|-
 +
| <code>TotalSectors:Int64;</code>
 +
| Total Sectors on the drive
 +
|-
 +
| <code>MFTCluster:Int64;</code>
 +
| Start Cluster of $MFT
 +
|-
 +
| <code>MFTMirror:Int64;</code>
 +
| Start Cluster of $MFTMirr
 +
|-
 +
| <code>ClustersPerFile:LongInt;</code>
 +
| Clusters Per File Record (Can be negative) (F6 = 1024 - See Notes)
 +
|-
 +
| <code>ClustersPerIndex:LongInt;</code>
 +
| Clusters Per Index Record (Can be negative) (F6 = 1024 - See Notes)
 +
|-
 +
| <code>VolumeSerial:Int64;</code>
 +
| Volume Serial Number
 +
|-
 +
| <code>Checksum:LongWord;</code>
 +
| Checksum (Not Used)
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Partition entry types'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TPartitionEntry = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>BootIndicator:Byte;</code>
 +
| 80 for active partition
 +
|-
 +
| <code>StartHead:Byte;</code>
 +
| Either Bits 0-3 only or Bits 0-7 depending on BIOS
 +
|-
 +
| <code>StartSector:Byte;</code>
 +
| Bits 0-5 = Sector, Bits 6-7 = Bits 8-9 of Cylinder
 +
|-
 +
| <code>StartCylinder:Byte;</code>
 +
| Bits 0-7 Only, Bits 8-9 in Sector
 +
|-
 +
| <code>TypeIndicator:Byte;</code>
 +
| See Table in Interrupt List and Below
 +
|-
 +
| <code>EndHead:Byte;</code>
 +
| Either Bits 0-3 only or Bits 0-7 depending on BIOS
 +
|-
 +
| <code>EndSector:Byte;</code>
 +
| Bits 0-5 = Sector, Bits 6-7 = Bits 8-9 of Cylinder
 +
|-
 +
| <code>EndCylinder:Byte;</code>
 +
| Bits 0-7 Only, Bits 8-9 in Sector
 +
|-
 +
| <code>SectorOffset:LongWord;</code>
 +
| Offset in sectors from current position to Start of Partition
 +
|-
 +
| <code>SectorCount:LongWord;</code>
 +
| Size in Sectors of the Partition
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Partition table'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 +
<code>TPartitionTable = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>PartitionEntry:array[MIN_PARTITION..MAX_PARTITION] of TPartitionEntry;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Master boot code'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TMasterBootCode = packed array[0..445] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Master boot record'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PMasterBootRecord = ^TMasterBootRecord;</code>
 +
 +
<code>TMasterBootRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Standard Master Boot Record
 +
|-
 +
| <code>BootCode:TMasterBootCode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PartitionTable:TPartitionTable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Ext master boot code'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TExtMasterBootCode = packed array[0..439] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Ext master boot record'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PExtMasterBootRecord = ^TExtMasterBootRecord;</code>
 +
 +
<code>TExtMasterBootRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: NT/2000/XP Master Boot Record
 +
|-
 +
| <code>BootCode:TExtMasterBootCode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DiskSignature:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Reserved1:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PartitionTable:TPartitionTable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Partition record'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PPartitionRecord = ^TPartitionRecord;</code>
 +
 +
<code>TPartitionRecord = packed record </code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Similar to TMasterBootRecord
 +
|-
 +
| <code>Dummy:array[0..445] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PartitionTable:TPartitionTable;</code>
 +
| Only first 2 ever used
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Sector types'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PSector = ^TSector;</code>
 +
 +
<code>TSector = packed array[0..511] of Byte;</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Boot sector jump'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TBootSectorJump = packed array[0..2] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Boot sector code'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TBootSectorCode = packed array[0..447] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Boot sector'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PBootSector = ^TBootSector;</code>
 +
 +
<code>TBootSector = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: FAT12/FAT16 Boot Sector
 +
|-
 +
| <code>BootJump:TBootSectorJump;</code>
 +
| JMP - EBh,??h,90h or E9h,??h,??h
 +
|-
 +
| <code>OEMName:array[0..7] of Char;</code>
 +
| MSWIN4.0/MSWIN4.1/MSDOS5.0
 +
|-
 +
| <code>BPB:TBiosPB;</code>
 +
| See Above
 +
|-
 +
| <code>DriveNumber:Byte;</code>
 +
| BIOS Int13 Drive No 00h, 80h, FFh etc
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Always 00h
 +
|-
 +
| <code>BootSignature:Byte;</code>
 +
| Always 29h
 +
|-
 +
| <code>VolumeSerial:LongWord;</code>
 +
| Serial No (Date/Time when Formatted)
 +
|-
 +
| <code>VolumeName:array[0..10] of Char;</code>
 +
| Volume Label or "NO NAME"
 +
|-
 +
| <code>SystemName:array[0..7] of Char;</code>
 +
| System Type FAT12, FAT16, FAT32 etc
 +
|-
 +
| <code>BootCode:TBootSectorCode;</code>
 +
| Executable Code
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Ext boot sector jumps'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TExtBootSectorJump = packed array[0..2] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Ext boot sector code'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TExtBootSectorCode = packed array[0..419] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Ext boot sector'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PExtBootSector = ^TExtBootSector;</code>
 +
 +
<code>TExtBootSector = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: FAT32 Boot Sector
 +
|-
 +
| <code>BootJump:TExtBootSectorJump;</code>
 +
| JMP - EBh,??h,90h or E9h,??h,??h
 +
|-
 +
| <code>OEMName:array[0..7] of Char;</code>
 +
| MSWIN4.1
 +
|-
 +
| <code>BPB:TExtBiosPB;</code>
 +
| See Above
 +
|-
 +
| <code>DriveNumber:Byte;</code>
 +
| BIOS Int13 Drive No 00h, 80h, FFh etc
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Always 00h
 +
|-
 +
| <code>BootSignature:Byte;</code>
 +
| Always 29h
 +
|-
 +
| <code>VolumeSerial:LongWord;</code>
 +
| Serial No (Date/Time when Formatted)
 +
|-
 +
| <code>VolumeName:array[0..10] of Char;</code>
 +
| Volume Label or "NO NAME"
 +
|-
 +
| <code>SystemName:array[0..7] of Char;</code>
 +
| System Type FAT12, FAT16, FAT32 etc
 +
|-
 +
| <code>BootCode:TExtBootSectorCode;</code>
 +
| Executable Code
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''NTFS boot sector jump'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TNtfsBootSectorJump = packed array[0..2] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''NTFS boot sector code'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TNtfsBootSectorCode = packed array[0..425] of Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''NTFS boot sector'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PNtfsBootSector = ^TNtfsBootSector;</code>
 +
 +
<code>TNtfsBootSector = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: NTFS Boot Sector
 +
|-
 +
| <code>BootJump:TNtfsBootSectorJump;</code>
 +
| JMP - EBh,??h,90h
 +
|-
 +
| <code>OEMName:array[0..7] of Char;</code>
 +
| Always NTFS
 +
|-
 +
| <code>BPB:TNtfsBiosPB;</code>
 +
| See Above (73 Bytes BPB and ExtBPB)
 +
|-
 +
| <code>BootCode:TNtfsBootSectorCode;</code>
 +
| Executable Code
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Magic Number $AA55
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''EXTFS boot sector'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PExtfsBootSector = ^TExtfsBootSector;</code>
 +
 +
<code>TExtfsBootSector = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: EXTFS Boot Sector
 +
|-
 +
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''FileSystem logging specific types'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PFileSysLogging = ^TFileSysLogging;</code>
 +
 +
<code>TFileSysLogging = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Logging Properties''
 +
|-
 +
| <code>Logging:TLoggingDevice;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
=== Class definitions ===
 
----
 
----
  

Revision as of 00:32, 19 January 2017

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



[Expand]
FileSystem specific constants FILESYS_*


[Expand]
FileSystem lock state constants FILESYS_LOCK_*


[Expand]
FileSystem cache constants FILESYS_CACHE_*


[Expand]
FileSystem entry timer constants FILESYS_ENTRY_*


[Expand]
FileSystem cache timer constants CACHE_TIMER_*


[Expand]
FileSystem entry timer constants ENTRY_TIMER_*


[Expand]
FileSystem partition, device and volume constants *_PARTITION, *_DEVICE, *_VOLUME


[Expand]
FileSystem find flag constants FIND_FLAG_*


[Expand]
FileSystem find wildcard constants FIND_WILDCARD_*


[Expand]
File mode constants fm*Mask


[Expand]
File attribute constants fa*


[Expand]
FileSystem volume attribute constants va*


[Expand]
FileSystem device attribute constants da*


[Expand]
FileSystem image attribute constants ia*


[Expand]
FileSystem catalog attribute constants ca*


[Expand]
FileSystem misc constants NAME_HASH_SIZE*


[Expand]
FileSystem partition Id constants pid*


[Expand]
FileSystem device description constants FILESYS_*_DEVICE_DESCRIPTION


[Expand]
FileSystem controller description constants FILESYS_*_CONTROLLER_DESCRIPTION


[Expand]
FileSystem logging constants FILESYS_LOG_*


Type definitions



Storage device event

[Expand]

PStorageDeviceEvent = ^TStorageDeviceEvent;

TStorageDeviceEvent = record

Cache timer

[Expand]

PCacheTimerItem = ^TCacheTimerItem;

TCacheTimerItem = record

Entry timer

[Expand]

PEntryTimerItem = ^TEntryTimerItem;

TEntryTimerItem = record

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

[Expand]

PCacheStatistics = ^TCacheStatistics;

TCacheStatistics = record

Search

[Expand]

TSearchRec = SysUtils.TRawbyteSearchRec;

TSearchRec = record

File search types

[Expand]

TFileSearchRec = record

Disk search

[Expand]

TDiskSearchRec = record

Partition search

[Expand]

TPartitionSearchRec = record

Volume search

[Expand]

TVolumeSearchRec = record

Drive search

[Expand]

TDriveSearchRec = record

Image search

[Expand]

TImageSearchRec = record

Catalog search

[Expand]

TCatalogSearchRec = record

Mount search

[Expand]

TMountSearchRec = record

Junction search

[Expand]

TJunctionSearchRec = record

Stream search

[Expand]

TStreamSearchRec = record

Link search

[Expand]

TLinkSearchRec = record

FAT12/FAT16 BIOS parameter block

[Expand]

TBiosPB = packed record

FAT32 BIOS parameter block

[Expand]

TExtBiosPB = packed record

NTFS BIOS parameter block

[Expand]

TNtfsBiosPB = packed record

Partition entry types

[Expand]

TPartitionEntry = packed record

Partition table

[Expand]

TPartitionTable = packed record

Master boot code

TMasterBootCode = packed array[0..445] of Byte;

Master boot record

[Expand]

PMasterBootRecord = ^TMasterBootRecord;

TMasterBootRecord = packed record

Ext master boot code

TExtMasterBootCode = packed array[0..439] of Byte;

Ext master boot record

[Expand]

PExtMasterBootRecord = ^TExtMasterBootRecord;

TExtMasterBootRecord = packed record

Partition record

[Expand]

PPartitionRecord = ^TPartitionRecord;

TPartitionRecord = packed record

Sector types

[Expand]

PSector = ^TSector;

TSector = packed array[0..511] of Byte;

Boot sector jump

TBootSectorJump = packed array[0..2] of Byte;

Boot sector code

TBootSectorCode = packed array[0..447] of Byte;

Boot sector

[Expand]

PBootSector = ^TBootSector;

TBootSector = packed record

Ext boot sector jumps

TExtBootSectorJump = packed array[0..2] of Byte;

Ext boot sector code

TExtBootSectorCode = packed array[0..419] of Byte;

Ext boot sector

[Expand]

PExtBootSector = ^TExtBootSector;

TExtBootSector = packed record

NTFS boot sector jump

TNtfsBootSectorJump = packed array[0..2] of Byte;

NTFS boot sector code

TNtfsBootSectorCode = packed array[0..425] of Byte;

NTFS boot sector

[Expand]

PNtfsBootSector = ^TNtfsBootSector;

TNtfsBootSector = packed record

EXTFS boot sector

[Expand]

PExtfsBootSector = ^TExtfsBootSector;

TExtfsBootSector = packed record

FileSystem logging specific types

[Expand]

PFileSysLogging = ^TFileSysLogging;

TFileSysLogging = record


Class definitions


To be documented

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;


Function declarations



Initialization functions

[Expand]
procedure FileSysInit;
Description: To be documented


[Expand]
function FileSysStart:LongWord;
Description: To be documented


[Expand]
function FileSysStop:LongWord;
Description: To be documented


[Expand]
procedure FileSysAsyncStart(Data:Pointer);
Description: To be documented


FileSystem functions (Delphi / FreePascal RTL Equivalent)

Drive functions

[Expand]
function FSGetPathDrive(const APath:String):Byte; inline;
Description: To be documented


[Expand]
function FSGetDriveType(ADrive:Byte):TDriveType; inline;
Description: To be documented


[Expand]
function FSGetDriveData(ADrive:Byte):TDriveData; inline;
Description: To be documented


[Expand]
function FSGetDriveAttr(ADrive:Byte):LongWord; inline;
Description: To be documented


[Expand]
function FSGetDriveLabel(ADrive:Byte):String; inline;
Description: To be documented


[Expand]
function FSSetDriveLabel(ADrive:Byte; const ALabel:String):Boolean; inline;
Description: To be documented


[Expand]
function FSGetDriveSerial(ADrive:Byte):LongWord; inline;
Description: To be documented


[Expand]
function FSSetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean; inline;
Description: To be documented


[Expand]
function FSIsDriveValid(ADrive:Byte):Boolean; inline;
Description: To be documented


[Expand]
function FSGetValidDrives:LongWord; inline;
Description: To be documented


[Expand]
function FSGetValidDriveNames:TStringList; inline;
Description: To be documented


[Expand]
function FSGetValidDriveStrings:String; inline;
Description: To be documented


[Expand]
function FSGetDriveFreeSpace(ADrive:Byte):LongWord; inline;
Description: To be documented


[Expand]
function FSGetDriveFreeSpaceEx(ADrive:Byte):Int64; inline;
Description: To be documented


[Expand]
function FSGetDriveTotalSpace(ADrive:Byte):LongWord; inline;
Description: To be documented


[Expand]
function FSGetDriveTotalSpaceEx(ADrive:Byte):Int64; inline;
Description: To be documented


[Expand]
function FSGetCurrentDrive:Byte; inline;
Description: To be documented


[Expand]
function FSSetCurrentDrive(const ADrive:String):Boolean; inline;
Description: To be documented


File functions

[Expand]
function FSFileOpen(const AFileName:String; AMode:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileCreate(const AFileName:String):Integer; inline;
Description: To be documented


[Expand]
function FSDeleteFile(const AFileName:String):Boolean; inline;
Description: To be documented


[Expand]
procedure FSFileClose(AHandle:Integer); inline;
Description: To be documented


[Expand]
function FSRenameFile(const AOldName,ANewName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSFileSeek(AHandle,AOffset,AOrigin:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileFlush(AHandle:Integer):Boolean; inline;
Description: To be documented


[Expand]
function FSFileTruncate(AHandle:Integer):Boolean; inline;
Description: To be documented


[Expand]
function FSSetEndOfFile(AHandle:THandle):Boolean; inline;
Description: To be documented


[Expand]
function FSEndOfFile(AHandle:Integer):Boolean; inline;
Description: To be documented


[Expand]
function FSFilePos(AHandle:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileSize(AHandle:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileAge(const AFileName:String):Integer; inline;
Description: To be documented


[Expand]
function FSFileExists(const AFileName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSFileGetAttr(const AFileName:String):Integer; inline;
Description: To be documented


[Expand]
function FSFileGetDate(AHandle:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileSetAttr(const AFileName:String; AAttr:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileSetDate(AHandle:Integer; AAge:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileRead(AHandle:Integer; var ABuffer; ACount:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileWrite(AHandle:Integer; const ABuffer; ACount:Integer):Integer; inline;
Description: To be documented


Directory functions

[Expand]
function FSCreateDir(const ADirName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSRemoveDir(const ADirName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSRenameDir(const AOldName,ANewName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSGetCurrentDir:String; inline;
Description: To be documented


[Expand]
function FSSetCurrentDir(const ADirName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSDirectoryExists(const ADirName:String):Boolean; inline;
Description: To be documented


[Expand]
procedure FSForceDirectories(ADirName:String); inline;
Description: To be documented


[Expand]
procedure FSDeleteTree(const ADirName:String); inline;
Description: To be documented


Search functions

[Expand]
function FSFindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer; inline;
Description: To be documented


[Expand]
function FSFindNext(var ASearchRec:TSearchRec):Integer; inline;
Description: To be documented


[Expand]
procedure FSFindClose(var ASearchRec:TSearchRec); inline;
Description: To be documented


Additional functions

[Expand]
function FSFileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean; inline;
Description: To be documented


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


[Expand]
function FSGetShortName(const AFileName:String):String; inline;
Description: To be documented


[Expand]
function FSGetLongName(const AFileName:String):String; inline;
Description: To be documented


[Expand]
function FSGetTrueName(const AFileName:String):String; inline;
Description: To be documented


Extended functions

[Expand]
function FSFileSeekEx(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; inline;
Description: To be documented


[Expand]
function FSEndOfFileEx(AHandle:Integer):Boolean; inline;
Description: To be documented


[Expand]
function FSFilePosEx(AHandle:Integer):Int64; inline;
Description: To be documented


[Expand]
function FSFileSizeEx(AHandle:THandle):Int64; inline;
Description: To be documented


[Expand]
function FSFileAgeEx(const AFileName:String):TFileTime; inline;
Description: To be documented


[Expand]
function FSFileGetAttrEx(AHandle:Integer):Integer; inline;
Description: To be documented


[Expand]
function FSFileGetDateEx(AHandle:Integer):TFileTime; inline;
Description: To be documented


[Expand]
function FSFileSetDateEx(AHandle:Integer; AAge:TFileTime):Integer; inline;
Description: To be documented


[Expand]
function FSGetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Description: To be documented


[Expand]
function FSSetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
Description: To be documented


[Expand]
function FSFindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer; inline;
Description: To be documented


[Expand]
function FSFindNextEx(var ASearchRec:TFileSearchRec):Integer; inline;
Description: To be documented


[Expand]
procedure FSFindCloseEx(var ASearchRec:TFileSearchRec); inline;
Description: To be documented


FileSystem functions (Win32 Compatibility)

Drive functions

[Expand]
function FSDefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean; inline;
Description: To be documented


[Expand]
function FSGetDiskType(const ARootPath:String):LongWord; inline;
Description: Equivalent to Win32 GetDriveType


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


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


[Expand]
function FSGetLogicalDrives:LongWord; inline;
Description: To be documented


[Expand]
function FSGetLogicalDriveStrings:String; inline;
Description: To be documented


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


[Expand]
function FSQueryDosDevice(const ARootPath:String):String; inline;
Description: To be documented


[Expand]
function FSSetVolumeLabel(const AVolume:String; const ALabel:String):Boolean; inline;
Description: To be documented


File functions

[Expand]
function FSAreFileApisANSI:Boolean; inline;
Description: To be documented


[Expand]
function FSCloseFile(AHandle:THandle):Boolean; inline;
Description: Equivalent to Win32 CloseHandle


[Expand]
function FSCopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean; inline;
Description: To be documented


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


[Expand]
function FSFindCloseFile(AHandle:THandle):Boolean; inline;
Description: Equivalent to Win32 FindClose


[Expand]
function FSFindFirstFile(const AFileName:String; var AFindData:TWin32FindData):THandle; inline;
Description: To be documented


[Expand]
function FSFindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean; inline;
Description: To be documented


[Expand]
function FSFlushFileBuffers(AHandle:THandle):Boolean; inline;
Description: To be documented


[Expand]
function FSGetFileAttributes(const AFileName:String):LongWord; inline;
Description: To be documented


[Expand]
function FSGetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord; inline;
Description: To be documented


[Expand]
function FSGetFullPathName(const AFileName:String):String; inline;
Description: To be documented


[Expand]
function FSGetShortPathName(const ALongPath:String):String; inline;
Description: To be documented


[Expand]
function FSMoveFile(const AExistingName,ANewName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean; inline;
Description: To be documented


[Expand]
function FSSetFileApisToANSI:Boolean; inline;
Description: To be documented


[Expand]
function FSSetFileApisToOEM:Boolean; inline;
Description: To be documented


[Expand]
function FSSetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean; inline;
Description: To be documented


[Expand]
function FSSetFilePointer(AHandle:THandle; ADistanceToMove:LongWord; var ADistanceToMoveHigh:LongWord; AMoveMethod:LongWord):LongWord; inline;
Description: To be documented


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


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


[Expand]
function FSGetLongPathName(const AShortPath:String):String; inline;
Description: To be documented


[Expand]
function FSSetFileShortName(const AFileName,AShortName:String):Boolean;
Description: To be documented


[Expand]
function FSSetFileShortNameEx(AHandle:THandle; const AShortName:String):Boolean;
Description: To be documented


[Expand]
function FSCreateHardLink(const ALinkName,AFileName:String):Boolean;
Description: To be documented


[Expand]
function FSCreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean;
Description: To be documented


Directory functions

[Expand]
function FSCreateDirectory(const APathName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSGetCurrentDirectory:String; inline;
Description: To be documented


[Expand]
function FSRemoveDirectory(const APathName:String):Boolean; inline;
Description: To be documented


[Expand]
function FSSetCurrentDirectory(const APathName:String):Boolean; inline;
Description: To be documented


RTL FileSystem functions

System file functions

[Expand]
procedure SystemDoClose(Handle:THandle);
Description: To be documented


[Expand]
procedure SystemDoErase(Name:PChar; NameChangeable:Boolean);
Description: To be documented


[Expand]
procedure SystemDoRename(Name1,Name2:PChar; Name1Changeable,Name2Changeable:Boolean);
Description: To be documented


[Expand]
function SystemDoWrite(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Description: To be documented


[Expand]
function SystemDoRead(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
Description: To be documented


[Expand]
function SystemDoFilePos(Handle:THandle):LongInt;
Description: To be documented


[Expand]
procedure SystemDoSeek(Handle:THandle; Pos:LongInt);
Description: To be documented


[Expand]
function SystemDoSeekEnd(Handle:THandle):LongInt;
Description: To be documented


[Expand]
function SystemDoFileSize(Handle:THandle):LongInt;
Description: To be documented


[Expand]
procedure SystemDoTruncate(Handle:THandle; Pos:LongInt);
Description: To be documented


[Expand]
procedure SystemDoOpen(var F; Name:PFileTextRecChar; Flags:LongInt; NameChangeable:Boolean);
Description: To be documented


System directory functions

[Expand]
procedure SystemDoMkDir(const Dir:RawByteString);
Description: To be documented


[Expand]
procedure SystemDoRmDir(const Dir:RawByteString);
Description: To be documented


[Expand]
procedure SystemDoChDir(const Dir:RawByteString);
Description: To be documented


[Expand]
procedure SystemDoGetDir(Drive:Byte; var Dir:RawByteString);
Description: To be documented


Dos disk functions

[Expand]
function DosDiskFree(Drive:Byte):Int64;
Description: To be documented


[Expand]
function DosDiskSize(Drive:Byte):Int64;
Description: To be documented


Dos FindFirst/FindNext functions

[Expand]
function DosFindMatchingFile(var f:SearchRec):Integer;
Description: Internal Only


[Expand]
function DosFindFirst(const Path:PathStr; Attr:Word; var f:SearchRec):Integer;
Description: To be documented


[Expand]
function DosFindNext(var f:SearchRec):Integer;
Description: To be documented


[Expand]
procedure DosFindClose(var f:SearchRec);
Description: To be documented


Dos file functions

[Expand]
function DosGetFTime(var f; var Time:LongInt):Integer;
Description: To be documented


[Expand]
function DosSetFTime(var f; Time:LongInt):Integer;
Description: To be documented


[Expand]
function DosGetFAttr(var f; var Attr:Word):Integer;
Description: To be documented


[Expand]
function DosSetFAttr(var f; Attr:Word):Integer;
Description: To be documented


[Expand]
function DosGetShortName(var p:ShortString):Boolean;
Description: To be documented


[Expand]
function DosGetLongName(var p:ShortString):Boolean;
Description: To be documented


SysUtils file functions

[Expand]
function SysUtilsFileOpen(const FileName:RawByteString; Mode:Integer):THandle;
Description: To be documented


[Expand]
function SysUtilsFileCreate(const FileName:RawByteString):THandle;
Description: To be documented


[Expand]
function SysUtilsDeleteFile(const FileName:RawByteString):Boolean;
Description: To be documented


[Expand]
procedure SysUtilsFileClose(Handle:THandle);
Description: To be documented


[Expand]
function SysUtilsRenameFile(const OldName,NewName:RawByteString):Boolean;
Description: To be documented


[Expand]
function SysUtilsFileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileTruncate(Handle:THandle;Size:Int64):Boolean;
Description: To be documented


[Expand]
function SysUtilsFileAge(const FileName:RawByteString):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileExists(const FileName:RawByteString):Boolean;
Description: To be documented


[Expand]
function SysUtilsFileGetAttr(const FileName:RawByteString):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileGetDate(Handle:THandle):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileSetAttr(const FileName:RawByteString; Attr:LongInt):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileSetDate(Handle:THandle; Age:LongInt):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileRead(Handle:THandle; out Buffer; Count:LongInt):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt;
Description: To be documented


[Expand]
function SysUtilsFileSeekEx(Handle:THandle; Offset:Int64; Origin:LongInt):Int64;
Description: To be documented


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


[Expand]
function SysUtilsInternalFindNext(var SearchRec:TSearchRec; var Name:RawByteString):LongInt;
Description: To be documented


[Expand]
procedure SysUtilsInternalFindClose(var Handle:THandle);
Description: To be documented


SysUtils disk functions

[Expand]
function SysUtilsDiskFree(Drive:Byte):Int64;
Description: To be documented


[Expand]
function SysUtilsDiskSize(Drive:Byte):Int64;
Description: To be documented


[Expand]
function SysUtilsDirectoryExists(const Directory:RawByteString):Boolean;
Description: To be documented


FileSystem logging functions

[Expand]
function FileSysLoggingStart(Logging:PLoggingDevice):LongWord;
Description: To be documented


[Expand]
function FileSysLoggingStop(Logging:PLoggingDevice):LongWord;
Description: To be documented


[Expand]
function FileSysLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
Description: To be documented


[Expand]
function FileSysLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
Description: To be documented


FileSystem helper functions

[Expand]
function FileSysStorageGetMediaType(Storage:PStorageDevice):TMediaType;
Description: To be documented


[Expand]
function FileSysStorageGetController(Storage:PStorageDevice):TDiskController;
Description: To be documented


[Expand]
procedure FileSysStorageDeviceAdd(Event:PStorageDeviceEvent);
Description: To be documented


[Expand]
procedure FileSysStorageDeviceInsert(Event:PStorageDeviceEvent);
Description: To be documented


[Expand]
function FileSysStorageDeviceRemove(Storage:PStorageDevice):LongWord;
Description: To be documented


[Expand]
function FileSysStorageDeviceEject(Storage:PStorageDevice):LongWord;
Description: To be documented


[Expand]
function FileSysStorageDeviceEnum(Storage:PStorageDevice; Data:Pointer):LongWord;
Description: To be documented


[Expand]
function FileSysStorageDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented


[Expand]
function ComparePartitions(APartition1,APartition2:Pointer):Integer;
Description: Sort partitions in order of start sector


[Expand]
procedure FileSysLog(Level:Integer;const AText:String);
Description: To be documented


[Expand]
procedure FileSysLogInfo(const AText:String); inline;
Description: To be documented


[Expand]
procedure FileSysLogError(const AText:String); inline;
Description: To be documented


[Expand]
procedure FileSysLogDebug(const AText:String); inline;
Description: To be documented


[Expand]
procedure CacheCheckTimer(Data:Pointer);
Description: To be documented


[Expand]
procedure EntryCheckTimer(Data:Pointer);
Description: To be documented


[Expand]
procedure EntryProcessTimer(Data:Pointer);
Description: To be documented


[Expand]
function MediaTypeToString(AType:TMediaType):String;
Description: To be documented


[Expand]
function FloppyTypeToString(AType:TFloppyType):String;
Description: To be documented


[Expand]
function ImageTypeToString(AType:TImageType):String;
Description: To be documented


[Expand]
function DriveTypeToString(AType:TDriveType):String;
Description: To be documented


[Expand]
function FileSysTypeToString(AType:TFileSysType):String;
Description: To be documented


[Expand]
function StringToFileSysType(const AFileSysType:String):TFileSysType;
Description: To be documented


[Expand]
function PartitionIdToString(AId:Byte):String;
Description: To be documented


[Expand]
function StringToPartitionId(const APartitionId:String):Byte;
Description: To be documented


[Expand]
function CacheModeToString(ACacheMode:TCacheMode):String;
Description: To be documented


[Expand]
function CacheStateToString(ACacheState:TCacheState):String;
Description: To be documented


[Expand]
function CachePageTimeToDateTime(const APageTime:Int64):TDateTime;
Description: To be documented


Return to Unit Reference