Difference between revisions of "Unit Filesystem"

From Ultibo.org
Jump to: navigation, search
Line 3,427: Line 3,427:
 
----
 
----
  
''To be documented''
+
 
 +
'''File system driver'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileSysDriver = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCache:THashCache;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FImages:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDrives:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolumes:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDevices:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPartitions:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FControllers:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizers:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRedirectors:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFileSystems:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRawHandles:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FEnumHandles:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFileHandles:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFindHandles:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCurrentIndex:LongWord;</code>
 +
| TLS Index for storing current drive
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FAllowFloppy:Boolean;</code>
 +
| Allow Scanning of Floppy Devices
 +
|-
 +
| <code>FAllowDrives:Boolean;</code>
 +
| Allow Disk Drives to represent Volumes by drive letter
 +
|-
 +
| <code>FOemConvert:Boolean;</code>
 +
| Convert OEM character strings to ANSI
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FEntryTimer:TEntryTimer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDefaultRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCurrent:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrent(ACurrent:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindMatchingFile(ADrive:TDiskDrive; AVolume:TDiskVolume; var ASearchRec:TSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Cache:THashCache read FCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property AllowFloppy:Boolean read FAllowFloppy write FAllowFloppy;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AllowDrives:Boolean read FAllowDrives write FAllowDrives;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OemConvert:Boolean read FOemConvert write FOemConvert;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseCache:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushCache(AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DiscardCache(AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCacheStatistics(var AStatistics:TCacheStatistics):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCatalogByNo(const APath:String; ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalogByName(const APath,AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalogByNext(const APath:String; APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddImage(AImage:TDiskImage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveImage(AImage:TDiskImage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetImageByNo(AImageNo:Integer; ALock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetImageByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetImageByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetImageByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetImagesByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetImageByNext(APrevious:TDiskImage; ALock,AUnlock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextImageNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxImageNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddDrive(ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDrive(ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDriveByNo(ADriveNo:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByParent(const AParent:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDrivesByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDrivesByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveByNext(APrevious:TDiskDrive; ALock,AUnlock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextDriveNo(AMediaType:TMediaType):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxDriveNo(AMediaType:TMediaType):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddVolume(AVolume:TDiskVolume):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveVolume(AVolume:TDiskVolume):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetVolumeByNo(AVolumeNo:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeByParent(const AParent:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumesByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumesByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeByNext(APrevious:TDiskVolume; ALock,AUnlock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextVolumeNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxVolumeNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddDevice(ADevice:TDiskDevice):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDevice(ADevice:TDiskDevice):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDeviceByNo(ADeviceNo:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByStorage(AStorage:PStorageDevice; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDevicesByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByIdentifier(AController:TDiskController; const AIdentifier:String; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceByNext(APrevious:TDiskDevice; ALock,AUnlock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextDeviceNo(AMediaType:TMediaType):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxDeviceNo(AMediaType:TMediaType):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddPartition(APartition:TDiskPartition):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemovePartition(APartition:TDiskPartition):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionByNo(ADevice:TDiskDevice; APartitionNo:Integer; AExtended,ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByName(ADevice:TDiskDevice; const AName:String; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByEntryNo(ADevice:TDiskDevice; APartition:TDiskPartition; AEntryNo:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionsByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionsByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionByNext(APrevious:TDiskPartition; ALock,AUnlock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextPartitionNo(ADevice:TDiskDevice; AExtended:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxPartitionNo(ADevice:TDiskDevice; AExtended:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddController(AController:TDiskController):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveController(AController:TDiskController):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckController(AController:TDiskController; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetControllerByNo(AControllerNo:Integer; ALock:Boolean; AState:LongWord):TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetControllerByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetControllerByNext(APrevious:TDiskController; ALock,AUnlock:Boolean; AState:LongWord):TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextControllerNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxControllerNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddRecognizer(ARecognizer:TRecognizer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveRecognizer(ARecognizer:TRecognizer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckRecognizer(ARecognizer:TRecognizer; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetRecognizerByImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizerByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizerByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizerByPartitionId(APartitionId:Byte; ALock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizerByBootSector(ABootSector:PBootSector; const AStartSector,ASectorCount:Int64; ALock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizerByNext(APrevious:TRecognizer; ALock,AUnlock:Boolean; AState:LongWord):TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddRedirector(ARedirector:TRedirector):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveRedirector(ARedirector:TRedirector):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckRedirector(ARedirector:TRedirector; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetRedirectorByPath(const APath:String; ALock:Boolean; AState:LongWord):TRedirector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRedirectorByDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):TRedirector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRedirectorByNext(APrevious:TRedirector; ALock,AUnlock:Boolean; AState:LongWord):TRedirector;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddFileSystem(AFileSystem:TFileSystem):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveFileSystem(AFileSystem:TFileSystem):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckFileSystem(AFileSystem:TFileSystem; ALock:Boolean; AState:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileSystemByDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemByRootName(const AName:String; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemByRootPath(const APath:String; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemByNext(APrevious:TFileSystem; ALock,AUnlock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocatePartitions:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateVolumes:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateDrives:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenRawHandle(ADevice:TDiskDevice; APartition:TDiskPartition; AVolume:TDiskVolume; ADrive:TDiskDrive; AMode:Integer; ALock:Boolean; AState:LongWord):TRawHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseRawHandle(AHandle:TRawHandle):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRawHandleByNext(APrevious:TRawHandle; ALock,AUnlock:Boolean; AState:LongWord):TRawHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReleaseRawHandles(ADevice:TDiskDevice; APartition:TDiskPartition; AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenEnumHandle(AFileSystem:TFileSystem; ALock:Boolean; AState:LongWord):TEnumHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseEnumHandle(AHandle:TEnumHandle):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEnumHandleByNext(APrevious:TEnumHandle; ALock,AUnlock:Boolean; AState:LongWord):TEnumHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UpdateEnumHandles(ADevice:TDiskDevice; APartition:TDiskPartition; ADrive:TDiskDrive; AVolume:TDiskVolume; AImage:TDiskImage; ACatalog:TDiskCatalog):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseEnumHandles(AFileSystem:TFileSystem):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenFileHandle(AVolume:TDiskVolume; ADrive:TDiskDrive; AParent,AEntry:TDiskEntry; AMode:Integer; ALock:Boolean; AState:LongWord):TFileHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseFileHandle(AHandle:TFileHandle):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileHandleByNext(APrevious:TFileHandle; ALock,AUnlock:Boolean; AState:LongWord):TFileHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckFileHandles(AEntry:TDiskEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseFileHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountFileHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenFindHandle(AVolume:TDiskVolume; ADrive:TDiskDrive; AParent:TDiskEntry; const AMask:String; AAttr,AFlags:LongWord; ALock:Boolean; AState:LongWord):TFindHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseFindHandle(AHandle:TFindHandle):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFindHandleByNext(APrevious:TFindHandle; ALock,AUnlock:Boolean; AState:LongWord):TFindHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UpdateFindHandles(AEntry:TDiskEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseFindHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountFindHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function InsertDevice(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectDevice(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenDevice(const AName:String; AMode:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure CloseDevice(AHandle:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadDevice(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteDevice(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EraseDevice(AHandle:Integer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekDevice(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstDevice(var ASearchRec:TDiskSearchRec; AVerbose:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextDevice(var ASearchRec:TDiskSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindDeviceClose(var ASearchRec:TDiskSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreatePartition(const ADevice,AParent:String; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeletePartition(const APath:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ModifyPartition(const APath:String; APartitionId:Byte):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ActivatePartition(const APath:String; AActive:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkPartition(const APath:String; const AStart,ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandPartition(const APath:String; const AStart,ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenPartition(const APath:String; AMode:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure ClosePartition(AHandle:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadPartition(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WritePartition(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekPartition(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstPartition(const ADevice:String; var ASearchRec:TPartitionSearchRec; AVerbose:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextPartition(var ASearchRec:TPartitionSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindPartitionClose(var ASearchRec:TPartitionSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateVolume(const AParent:String; ADriveNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteVolume(Const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MountVolume(const AName:String; ADriveNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountVolume(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FormatVolume(const AName:String; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DefragmentVolume(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ConvertVolume(const AName:String; AFileSysType:TFileSysType):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RepairVolume(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyVolume(const AName,ADest:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkVolume(const AName:String; const AStart,ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandVolume(const AName:String; const AStart,ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenVolume(const AName:String; AMode:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure CloseVolume(AHandle:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadVolume(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteVolume(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekVolume(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstVolume(var ASearchRec:TVolumeSearchRec; AVerbose:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextVolume(var ASearchRec:TVolumeSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindVolumeClose(var ASearchRec:TVolumeSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateDrive(const AName,AParent:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteDrive(const AName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FormatDrive(const AName:String; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenDrive(const AName:String; AMode:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure CloseDrive(AHandle:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadDrive(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteDrive(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekDrive(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstDrive(var ASearchRec:TDriveSearchRec; AVerbose:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextDrive(var ASearchRec:TDriveSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindDriveClose(var ASearchRec:TDriveSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MountImage(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountImage(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertImage(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectImage(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ConvertImage(AImageNo:Integer; AImageType:TImageType):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyImage(AImageNo,ADestNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkImage(AImageNo:Integer; const ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandImage(AImageNo:Integer; const ASize:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AImageNo:Integer; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AImageNo:Integer;const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot(AImageNo:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstImage(var ASearchRec:TImageSearchRec; AVerbose:Boolean):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextImage(var ASearchRec:TImageSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindImageClose(var ASearchRec:TImageSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateCatalog(const APath,AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteCatalog(const APath:String; ACatalogNo:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstCatalog(const APath:String; var ASearchRec:TCatalogSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindCatalogClose(var ASearchRec:TCatalogSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean; </code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ScheduleEntry(AEntry:TDiskEntry; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnscheduleEntry(AEntry:TDiskEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPathDrive(const APath:String):Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveType(ADrive:Byte):TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveData(ADrive:Byte):TDriveData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveAttr(ADrive:Byte):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveLabel(ADrive:Byte):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetDriveLabel(ADrive:Byte; const ALabel:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveSerial(ADrive:Byte):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function IsDriveValid(ADrive:Byte):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetValidDrives:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetValidDriveNames:TStringList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetValidDriveStrings:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFreeSpace(ADrive:Byte):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFreeSpaceEx(ADrive:Byte):Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveTotalSpace(ADrive:Byte):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveTotalSpaceEx(ADrive:Byte):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCurrentDrive:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrentDrive(const ADrive:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPathVolume(const APath:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeType(const AVolume:String):TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeData(const AVolume:String):TDriveData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeAttr(const AVolume:String):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeLabel(const AVolume:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetVolumeLabel(const AVolume:String; const ALabel:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeSerial(const AVolume:String):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetVolumeSerial(const AVolume:String; ASerial:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function IsVolumeValid(const AVolume:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetValidVolumeNames:TStringList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFreeSpace(const AVolume:String):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFreeSpaceEx(const AVolume:String):Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeTotalSpace(const AVolume:String):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeTotalSpaceEx(const AVolume:String):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileOpen(const AFileName:String; AMode:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileCreate(const AFileName:String):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteFile(const AFileName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FileClose(AHandle:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RenameFile(const AOldName,ANewName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSeek(AHandle,AOffset,AOrigin:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileFlush(AHandle:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileTruncate(AHandle:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetEndOfFile(AHandle:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function EndOfFile(AHandle:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FilePos(AHandle:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSize(AHandle:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileAge(const AFileName:String):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileExists(const AFileName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileGetAttr(const AFileName:String):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileGetDate(AHandle:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetAttr(const AFileName:String; AAttr:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetDate(AHandle:Integer; AAge:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileRead(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileWrite(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateDir(const ADirName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDir(const ADirName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RenameDir(const AOldName,ANewName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCurrentDir:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCurrentDirEx(ADrive:Byte):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrentDir(const ADirName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DirectoryExists(const ADirName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure ForceDirectories(ADirName:String);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure DeleteTree(const ADirName:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNext(var ASearchRec:TSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindClose(var ASearchRec:TSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstStream(const AFileName:String; var ASearchRec:TStreamSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextStream(var ASearchRec:TStreamSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindStreamClose(var ASearchRec:TStreamSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstFileName(const AFileName:String; var ASearchRec:TLinkSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextFileName(var ASearchRec:TLinkSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindFileNameClose(var ASearchRec:TLinkSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateHardLink(const ALinkName,AFileName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteHardLink(const ALinkName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MountPointExists(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateMountPoint(const APathName,AVolumeName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteMountPoint(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function JunctionPointExists(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateJunctionPoint(const APathName,AFolderName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteJunctionPoint(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SymbolicLinkExists(const ALinkName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateSymbolicLinkEx(const ALinkName,AShortName,ATargetName:String; ADirectory:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSymbolicLink(const ALinkName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMountPointTarget(const APathName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetJunctionPointTarget(const APathName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSymbolicLinkTarget(const ALinkName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetFileShortName(const AFileName,AShortName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileShortNameEx(AHandle:Integer; const AShortName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileSecurity(const AFileName:String; ADescriptor:Pointer; var ASize:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileSecurity(const AFileName:String; ADescriptor:Pointer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileCopyEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileMove(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileMoveEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPathName(const AFileName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetShortName(const AFileName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLongName(const AFileName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTrueName(const AFileName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddSlash(const AFilePath:String; ALeading,ATrailing:Boolean):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSlash(const AFilePath:String; ALeading,ATrailing:Boolean):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileCreateEx(const AFileName,AShortName:String):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateDirEx(const ADirName,AShortName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileSeekEx(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function EndOfFileEx(AHandle:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FilePosEx(AHandle:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSizeEx(AHandle:Integer):Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileAgeEx(const AFileName:String):TFileTime;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileGetAttrEx(AHandle:Integer):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileGetDateEx(AHandle:Integer):TFileTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetDateEx(AHandle:Integer ;AAge:TFileTime):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileTime(AHandle:Integer; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileTime(AHandle:Integer; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindOne(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindAll(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextEx(var ASearchRec:TFileSearchRec):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindCloseEx(var ASearchRec:TFileSearchRec);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDiskType(const ARootPath:String):LongWord;</code>
 +
| Equivalent to Win32 GetDriveType
 +
|-
 +
| <code>function GetDiskFreeSpace(const ARootPath:String; var ASectorsPerCluster,ABytesPerSector,ANumberOfFreeClusters,ATotalNumberOfClusters:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDiskFreeSpaceEx(const APathName:String; var AFreeBytesAvailableToCaller,ATotalNumberOfBytes,ATotalNumberOfFreeBytes:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLogicalDrives:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLogicalDriveStrings:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeInformation(const ARootPath:String; var AVolumeName:String; var AVolumeSerialNumber,AMaximumComponentLength,AFileSystemFlags:LongWord; var ASystemName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function QueryDosDevice(const ARootPath:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetVolumeLabel</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AreFileApisANSI:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseFile(AHandle:THandle):Boolean;</code>
 +
| Equivalent to Win32 CloseHandle
 +
|-
 +
| <code>function CopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateFile(const AFileName:String; AAccessMode,AShareMode,ACreateFlags,AFileAttributes:LongWord):THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteFile</code>
 +
| Already Defined
 +
|-
 +
| <code>function FindCloseFile(AHandle:THandle):Boolean;</code>
 +
| Equivalent to Win32 FindClose
 +
|-
 +
| <code>function FindFirstFile(const AFileName:String; var AFindData:TWin32FindData):THandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushFileBuffers(AHandle:THandle):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetBinaryType</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileAttributes(const AFileName:String):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileInformationByHandle</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSizeEx</code>
 +
| Same as FileSizeEx
 +
|-
 +
| <code>function GetFileTime</code>
 +
| Already Defined
 +
|-
 +
| <code>function GetFileType</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFullPathName(const AFileName:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetShortPathName(const ALongPath:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTempDrive</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTempFileName</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTempPath</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LockFile</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LockFileEx</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MoveFile(const AExistingName,ANewName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MoveFileEx</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadFileEx</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SearchPath</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetEndOfFile</code>
 +
| Already Defined
 +
|-
 +
| <code>function SetFileApisToANSI:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileApisToOEM:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFilePointer(AHandle:THandle; ADistanceToMove:LongWord; var ADistanceToMoveHigh:LongWord; AMoveMethod:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFilePointerEx(AHandle:THandle; const ADistanceToMove:Int64; var ANewFilePointer:Int64; AMoveMethod:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileTime</code>
 +
| Already Defined
 +
|-
 +
| <code>function SetHandleCount</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockFile</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockFileEx</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteFile(AHandle:THandle; const ABuffer; ABytesToWrite:LongWord; var ABytesWritten:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteFileEx </code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLongPathName(const AShortPath:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileShortName</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateDirectory(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateDirectoryEx</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCurrentDirectory:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDirectory(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrentDirectory(const APathName:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstStream </code>
 +
| Already Defined
 +
|-
 +
| <code>function FindNextStream</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateHardlink</code>
 +
| Already Defined
 +
|-
 +
| <code>function FindFirstFileName</code>
 +
| Already Defined
 +
|-
 +
| <code>function FindNextFileName</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetVolumeMountPoint</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteVolumeMountPoint</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindFirstVolumeMountPoint</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextVolumeMountPoint</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindVolumeMountPointClose</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSymbolicLink</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstVolume</code>
 +
| Already Defined
 +
|-
 +
| <code>function FindNextVolume</code>
 +
| Already Defined
 +
|-
 +
| <code>function FindVolumeClose</code>
 +
| Already Defined
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileSecurity</code>
 +
| Already Defined
 +
|-
 +
| <code>function SetFileSecurity</code>
 +
| Already Defined
 +
|-
 +
| <code>function GetNamedSecurityInfo</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetNamedSecurityInfo</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDeviceFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDeviceFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetVolumeFromPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDriveFromPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetImageFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCatalogFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskCatalog;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileSystemFromPath(const APath:String; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSystemFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetRawFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TRawHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEnumFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TEnumHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFindFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TFindHandle;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system list'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileSysList = class(TLinkedObjList)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>procedure ClearList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system list extended'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileSysListEx = class(TLinkedObjList)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ALock:TSynchronizerHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>procedure ClearList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system tree'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileSysTree = class(TLinkedObjTree)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>procedure ClearList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk drive'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskDrive = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADriveNo:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDriveNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDriveType:TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFileSystem:TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRemovable:Boolean;</code>
 +
| Drive is removable - Set by DriveInit
 +
|-
 +
| <code>FRecognizable:Boolean;</code>
 +
| Drive allows Recognize Drive
 +
|-
 +
| <code>FRecognized:Boolean;</code>
 +
| Recognized Drive - Set by Recognizer
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| Sector Size of Drive or Device
 +
|-
 +
| <code>FStartSector:Int64;</code>
 +
| Start Sector on Drive or Device
 +
|-
 +
| <code>FSectorCount:LongWord;</code>
 +
| Total Sectors in Drive
 +
|-
 +
| <code>FSectorShiftCount:Word;</code>
 +
| Sectors to Bytes Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRoot:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetParent:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMaxFile:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxPath:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSystemName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeGUID:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeSerial:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDriveType:TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFileSystem(AFileSystem:TFileSystem);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetRemovable:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognizable:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRecognized:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetStartSector:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorShiftCount:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartition:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Root:String read GetRoot;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Parent:String read GetParent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Volume:TDiskVolume read FVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DriveNo:Integer read FDriveNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property MaxFile:Integer read GetMaxFile;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxPath:Integer read GetMaxPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read GetAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SystemName:String read GetSystemName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeName:String read GetVolumeName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeGUID:String read GetVolumeGUID;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeSerial:LongWord read GetVolumeSerial;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DriveType:TDriveType read GetDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FileSysType:TFileSysType read GetFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FileSystem:TFileSystem read FFileSystem write SetFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Removable:Boolean read GetRemovable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognizable:Boolean read GetRecognizable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognized:Boolean read GetRecognized write FRecognized;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SectorSize:Word read GetSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read GetStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:LongWord read GetSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorShiftCount:Word read GetSectorShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Device:TDiskDevice read GetDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Partition:TDiskPartition read GetPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DriveInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Raw handle'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TRawHandle = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>Device:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Partition:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Volume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Drive:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>OpenMode:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ShareMode:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>Size:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Position:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Handle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Enumerate handle'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TEnumHandle = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>FileSystem:TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>Handle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>CurrentDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentPartition:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentDrive:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentVolume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentImage:TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentCatalog:TDiskCatalog;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''File handle'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileHandle = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>Volume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Drive:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>OpenMode:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ShareMode:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>Position:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Handle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>DataValue:LongWord;</code>
 +
| Available to FileSystem for private use
 +
|-
 +
| <code>DataOffset:LongWord;</code>
 +
| Available to FileSystem for private use
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ParentEntry:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
| <code>HandleEntry:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Find handle'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFindHandle = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>Volume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Drive:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>Any:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Mask:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Attr:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Flags:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Handle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ParentEntry:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentEntry:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskController = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FControllerNo:Integer;</code>
 +
| \Controller0, \Controller1 etc - See Notes
 +
|-
 +
| <code>FDescription:String;</code>
 +
| Description of Controller - eg "Standard ATA Controller"
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDescription:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFixedDiskCount:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFloppyDiskCount:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LCHStoLBA(ADevice:TDiskDevice; Cylinder,Head,Sector:Word; var LBA:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PCHStoLBA(ADevice:TDiskDevice; Cylinder,Head,Sector:LongWord; var LBA:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LBAtoLCHS(ADevice:TDiskDevice; LBA:LongWord; var Cylinder,Head,Sector:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LBAtoPCHS(ADevice:TDiskDevice; LBA:LongWord; var Cylinder,Head,Sector:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LCHStoPCHS(ADevice:TDiskDevice; LCylinder,LHead,LSector:Word; var PCylinder,PHead,PSector:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PCHStoLCHS(ADevice:TDiskDevice; PCylinder,PHead,PSector:LongWord; var LCylinder,LHead,LSector:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ControllerNo:Integer read FControllerNo;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Description:String read GetDescription;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ControllerInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Erase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Reset(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Information(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function VendorId(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceId(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Manufacturer(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Product(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SerialNumber(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function HostBus(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BusNumber(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceNumber(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FunctionNumber(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BaseAddress(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InterfaceType(ADevice:TDiskDevice):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Slave(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FireWireGUID(ADevice:TDiskDevice):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WorldWideNo(ADevice:TDiskDevice):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PhysicalPort(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ControlPort(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function IRQ(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PIO(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DMA(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LBA(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Version(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaType(ADevice:TDiskDevice):TMediaType; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ready(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Locked(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Lockable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ejectable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Readable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Writeable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Eraseable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Removable(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ChangeLine(ADevice:TDiskDevice):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SectorSize(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorCount(ADevice:TDiskDevice):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorShiftCount(ADevice:TDiskDevice):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk device'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskDevice = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; AController:TDiskController; AImage:TDiskImage; AStorage:PStorageDevice; ADeviceNo:Integer; const AIdentifier:String);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FController:TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FImage:TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FStorage:PStorageDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDeviceNo:Integer;</code>
 +
| 00h, 01h, 80h, 81h etc - See Notes
 +
|-
 +
| <code>FIdentifier:String;</code>
 +
| Controller Specific Identifier
 +
|-
 +
| <code>FInformation:String;</code>
 +
| Description of Device - eg "Standard ATA Disk"
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FVendorId:Word;</code>
 +
| PCI or USB Vendor Id
 +
|-
 +
| <code>FDeviceId:Word;</code>
 +
| PCI or USB Device Id
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FManufacturer:String;</code>
 +
| Device Manufacturer name
 +
|-
 +
| <code>FProduct:String;</code>
 +
| Device Product name
 +
|-
 +
| <code>FSerialNumber:String;</code>
 +
| Device Serial Number
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FHostBus:String;</code>
 +
| PCI, ISA etc
 +
|-
 +
| <code>FBusNumber:Word;</code>
 +
| PCI Bus No
 +
|-
 +
| <code>FDeviceNumber:Word;</code>
 +
| PCI Device No
 +
|-
 +
| <code>FFunctionNumber:Word;</code>
 +
| PCI Function No
 +
|-
 +
| <code>FBaseAddress:Word;</code>
 +
| ISA Base Address
 +
|-
 +
| <code>FInterfaceType:String;</code>
 +
| ATA, ATAPI, SCSI, USB, 1394, FIBRE
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSlave:Boolean;</code>
 +
| Device is Slave
 +
|-
 +
| <code>FLogicalUnitNo:LongWord;</code>
 +
| LUN No eg SCSI, ATAPI or USB
 +
|-
 +
| <code>FFireWireGUID:Int64;</code>
 +
| FireWire GUID No
 +
|-
 +
| <code>FWorldWideNo:Int64;</code>
 +
| Fibre Channel WWN
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPhysicalPort:Word;</code>
 +
| Physical IO Port
 +
|-
 +
| <code>FControlPort:Word;</code>
 +
| Drive Control Port
 +
|-
 +
| <code>FIRQ:LongWord;</code>
 +
| IRQ No
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPIO:Boolean;</code>
 +
| PIO Transfer Enabled
 +
|-
 +
| <code>FDMA:Boolean;</code>
 +
| DMA Transfer Enabled
 +
|-
 +
| <code>FLBA:Boolean;</code>
 +
| Supports LBA (eg Int13 Extensions)
 +
|-
 +
| <code>FVersion:LongWord;</code>
 +
| Version Information (eg Int13 Extensions Version 01h,20h,21h,30h)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FMediaType:TMediaType;</code>
 +
| Media Type eg Fixed, Removable, Floppy
 +
|-
 +
| <code>FFloppyType:TFloppyType;</code>
 +
| Floppy Type eg 360K, 1.44M, ATAPI
 +
|-
 +
| <code>FReady:Boolean;</code>
 +
| Media is Inserted in Drive
 +
|-
 +
| <code>FLocked:Boolean;</code>
 +
| Media is Locked in Drive
 +
|-
 +
| <code>FLockable:Boolean;</code>
 +
| Media is Lockable
 +
|-
 +
| <code>FEjectable:Boolean;</code>
 +
| Media is Ejectable
 +
|-
 +
| <code>FReadable:Boolean;</code>
 +
| Media is Readable
 +
|-
 +
| <code>FWriteable:Boolean;</code>
 +
| Media is Writeable
 +
|-
 +
| <code>FEraseable:Boolean;</code>
 +
| Media is Eraseable
 +
|-
 +
| <code>FRemovable:Boolean;</code>
 +
| Media is Removable
 +
|-
 +
| <code>FChangeLine:Boolean;</code>
 +
| Supports ChangeLine detection
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPhysicalCylinders:LongWord;</code>
 +
| Physical Cylinders on Drive
 +
|-
 +
| <code>FPhysicalHeads:LongWord;</code>
 +
| Physical Heads on Drive
 +
|-
 +
| <code>FPhysicalSectors:LongWord;</code>
 +
| Physical Sectors per Track
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLogicalCylinders:LongWord;</code>
 +
| Logical Cylinders on Drive
 +
|-
 +
| <code>FLogicalHeads:LongWord;</code>
 +
| Logical Heads on Drive
 +
|-
 +
| <code>FLogicalSectors:LongWord;</code>
 +
| Logical Sectors per Track
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| Bytes Per Sector
 +
|-
 +
| <code>FSectorCount:Int64;</code>
 +
| Total Sectors
 +
|-
 +
| <code>FSectorShiftCount:Word;</code>
 +
| Sectors to Bytes Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPageCount:Word;</code>
 +
| Cache Page Count for this Device
 +
|-
 +
| <code>FPageShift:Word;</code>
 +
| Cache Page Shift for this Device
 +
|-
 +
| <code>FPageMask:LongWord;</code>
 +
| Cache Page Mask for this Device
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetIdentifier:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetInformation:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetManufacturer:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetProduct:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSerialNumber:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetHostBus:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetInterfaceType:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFreeSectors:Int64;</code>
 +
| Unused Sectors on Device
 +
|-
 +
| <code>function GetAvailableSectors:Int64;</code>
 +
| Largest block of Unused Sectors
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetAvailableBlock(var AStart,ACount:Int64):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDiskSignature:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetDiskSignature(ADiskSignature:LongWord); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Controller:TDiskController read FController;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Image:TDiskImage read FImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Storage:PStorageDevice read FStorage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DeviceNo:Integer read FDeviceNo;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Identifier:String read GetIdentifier;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Information:String read GetInformation;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property VendorId:Word read FVendorId;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DeviceId:Word read FDeviceId;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Manufacturer:String read GetManufacturer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Product:String read GetProduct;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SerialNumber:String read GetSerialNumber;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HostBus:String read GetHostBus;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BusNumber:Word read FBusNumber;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DeviceNumber:Word read FDeviceNumber;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FunctionNumber:Word read FFunctionNumber;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BaseAddress:Word read FBaseAddress;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property InterfaceType:String read GetInterfaceType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Slave:Boolean read FSlave;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LogicalUnitNo:LongWord read FLogicalUnitNo;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FireWireGUID:Int64 read FFireWireGUID;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WorldWideNo:Int64 read FWorldWideNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PhysicalPort:Word read FPhysicalPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ControlPort:Word read FControlPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property IRQ:LongWord read FIRQ;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PIO:Boolean read FPIO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DMA:Boolean read FDMA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LBA:Boolean read FLBA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Version:LongWord read FVersion;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property MediaType:TMediaType read FMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FloppyType:TFloppyType read FFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Ready:Boolean read FReady;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Locked:Boolean read FLocked;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Lockable:Boolean read FLockable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Ejectable:Boolean read FEjectable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Readable:Boolean read FReadable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Writeable:Boolean read FWriteable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Eraseable:Boolean read FEraseable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Removable:Boolean read FRemovable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ChangeLine:Boolean read FChangeLine;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PhysicalCylinders:LongWord read FPhysicalCylinders;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PhysicalHeads:LongWord read FPhysicalHeads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PhysicalSectors:LongWord read FPhysicalSectors;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property LogicalCylinders:LongWord read FLogicalCylinders;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LogicalHeads:LongWord read FLogicalHeads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LogicalSectors:LongWord read FLogicalSectors;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SectorSize:Word read FSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorShiftCount:Word read FSectorShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PageCount:Word read FPageCount write FPageCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageShift:Word read FPageShift write FPageShift;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageMask:LongWord read FPageMask write FPageMask;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FreeSectors:Int64 read GetFreeSectors;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AvailableSectors:Int64 read GetAvailableSectors;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DiskSignature:LongWord read GetDiskSignature write SetDiskSignature;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DeviceInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocatePartitions:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateVolumes:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateVolume:TDiskVolume; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreatePartition(AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeletePartition(APartition:TDiskPartition):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Reset:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function InsertDevice:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectDevice:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenDevice(AMode:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure CloseDevice(AHandle:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadDevice(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteDevice(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EraseDevice(AHandle:Integer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekDevice(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk partition'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskPartition = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ADevice:TDiskDevice; APartition:TDiskPartition; APartitionNo:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPartition:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPartitionNo:Integer;</code>
 +
| \Partition1, \Partition2 etc - See Notes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FEntryNo:Integer;</code>
 +
| 0,1,2,3
 +
|-
 +
| <code>FPartitionId:Byte;</code>
 +
| Partition Type from Table
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBeginHead:Word;</code>
 +
| Logical Starting Head (not Physical)
 +
|-
 +
| <code>FBeginSector:Word;</code>
 +
| Logical Starting Sector (not Physical)
 +
|-
 +
| <code>FBeginCylinder:Word;</code>
 +
| Logical Starting Cylinder (not Physical)
 +
|-
 +
| <code>FEndHead:Word;</code>
 +
| Logical Ending Head (not Physical)
 +
|-
 +
| <code>FEndSector:Word;</code>
 +
| Logical Ending Sector (not Physical)
 +
|-
 +
| <code>FEndCylinder:Word;</code>
 +
| Logical Ending Cylinder (not Physical)
 +
|-
 +
| <code>FSectorOffset:LongWord;</code>
 +
| Offset in Sectors from Location of Table to StartSector
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FActive:Boolean;</code>
 +
| Active Partition Indicator ($80)
 +
|-
 +
| <code>FExtended:Boolean;</code>
 +
| Extended Partition Type (no Volume) - Set by Recognizer
 +
|-
 +
| <code>FRecognizable:Boolean;</code>
 +
| Partition allows Recognize Partition
 +
|-
 +
| <code>FRecognized:Boolean;</code>
 +
| Recognized Partition Id - Set by Recognizer
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FNonVolume:Boolean;</code>
 +
| Non Volume Partition (eg Linux Swap) - Set by Recognizer
 +
|-
 +
| <code>FMultiVolume:Boolean;</code>
 +
| Multiple Volume Partition (eg Netware) - Set by Recognizer
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FStartSector:Int64;</code>
 +
| Absolute Start Sector on Device
 +
|-
 +
| <code>FSectorCount:LongWord;</code>
 +
| Total Sectors in Partition
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPath:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetParent:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLogical:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPrimary:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetExtended(AExtended:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFreeSectors:LongWord;</code>
 +
| Unused Sectors in Partition
 +
|-
 +
| <code>function GetAvailableSectors:LongWord;</code>
 +
| Largest block of Unused Sectors
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetAvailableBlock(var AStart,ACount:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetRoot:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetParentStart:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetPartitionRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Path:String read GetPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Parent:String read GetParent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Device:TDiskDevice read FDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Partition:TDiskPartition read FPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PartitionNo:Integer read FPartitionNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property EntryNo:Integer read FEntryNo write FEntryNo;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PartitionId:Byte read FPartitionId;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property BeginHead:Word read FBeginHead;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BeginSector:Word read FBeginSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BeginCylinder:Word read FBeginCylinder;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property EndHead:Word read FEndHead;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property EndSector:Word read FEndSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property EndCylinder:Word read FEndCylinder;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorOffset:LongWord read FSectorOffset;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Active:Boolean read FActive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Logical:Boolean read GetLogical;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Primary:Boolean read GetPrimary;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Extended:Boolean read FExtended write SetExtended;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognizable:Boolean read FRecognizable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognized:Boolean read FRecognized write FRecognized;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property NonVolume:Boolean read FNonVolume write FNonVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MultiVolume:Boolean read FMultiVolume write FMultiVolume;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read FStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:LongWord read FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FreeSectors:LongWord read GetFreeSectors;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AvailableSectors:LongWord read GetAvailableSectors;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Root:TDiskPartition read GetRoot;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ParentStart:LongWord read GetParentStart;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PartitionInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocatePartitions:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateVolumes:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateVolume:TDiskVolume; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenPartition(AMode:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure ClosePartition(AHandle:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadPartition(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WritePartition(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekPartition(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk volume'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskVolume = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ADevice:TDiskDevice; APartition:TDiskPartition; AVolumeNo:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPartition:TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FVolumeNo:Integer;</code>
 +
| \Volume1 , \Volume2, etc - See Notes
 +
|-
 +
| <code>FSegmentNo:Integer;</code>
 +
| Segment0, Segment1 etc - for Multiple Segment volumes (eg Netware)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDriveType:TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFileSystem:TFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRemovable:Boolean;</code>
 +
| Volume is Removable - Set by VolumeInit
 +
|-
 +
| <code>FRecognizable:Boolean;</code>
 +
| Volume allows Recognize Volume
 +
|-
 +
| <code>FRecognized:Boolean;</code>
 +
| Recognized Volume - Set by Recognizer
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| Sector Size of Device
 +
|-
 +
| <code>FStartSector:Int64;</code>
 +
| Absolute Start Sector on Device
 +
|-
 +
| <code>FSectorCount:LongWord;</code>
 +
| Total Sectors in Volume
 +
|-
 +
| <code>FSectorShiftCount:Word;</code>
 +
| Sectors to Bytes Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetParent:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMaxFile:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxPath:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSystemName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeGUID:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeSerial:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFileSystem(AFileSystem:TFileSystem);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetStartSector:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorShiftCount:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaTypeToDriveType(AMediaType:TMediaType):TDriveType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Parent:String read GetParent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Device:TDiskDevice read FDevice;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Partition:TDiskPartition read FPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeNo:Integer read FVolumeNo;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SegmentNo:Integer read FSegmentNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property MaxFile:Integer read GetMaxFile;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxPath:Integer read GetMaxPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read GetAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SystemName:String read GetSystemName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeName:String read GetVolumeName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeGUID:String read GetVolumeGUID;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeSerial:LongWord read GetVolumeSerial;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DriveType:TDriveType read FDriveType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FileSysType:TFileSysType read GetFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FileSystem:TFileSystem read FFileSystem write SetFileSystem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Removable:Boolean read FRemovable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognizable:Boolean read FRecognizable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Recognized:Boolean read FRecognized write FRecognized;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SectorSize:Word read GetSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read GetStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:LongWord read GetSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorShiftCount:Word read GetSectorShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function VolumeInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateDrive(ADriveNo:Integer):TDiskDrive; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteDrive(ADrive:TDiskDrive):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MountVolume(ADriveNo:Integer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountVolume:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FormatVolume(AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DefragmentVolume:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ConvertVolume(AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RepairVolume:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyVolume(ADest:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkVolume(const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandVolume(const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenVolume(AMode:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure CloseVolume(AHandle:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadVolume(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteVolume(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekVolume(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk image'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskImage = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; AController:TDiskController; const AName:String; AImageNo:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FController:TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FImageNo:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLocked:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FChanged:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FImageType:TImageType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMediaType:TMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFloppyType:TFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCylinders:LongWord;</code>
 +
| Physical Cylinders on Drive
 +
|-
 +
| <code>FHeads:LongWord;</code>
 +
| Physical Heads on Drive
 +
|-
 +
| <code>FSectors:LongWord;</code>
 +
| Physical Sectors per Track
 +
|-
 +
| <code>FLogicalShiftCount:Word;</code>
 +
| Physical to Logical Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| Bytes Per Sector
 +
|-
 +
| <code>FSectorCount:Int64;</code>
 +
| Total Sectors
 +
|-
 +
| <code>FSectorShiftCount:Word;</code>
 +
| Sectors to Bytes Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPartitionId:Byte;</code>
 +
| Partition Type for Table
 +
|-
 +
| <code>FFileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetReady:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetReadable:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetWriteable:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEraseable:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLogicalShiftCount:Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorShiftCount:Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionId:Byte; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetName(const AName:String); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetDevice(ADevice:TDiskDevice);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Controller:TDiskController read FController;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Name:String read GetName write SetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ImageNo:Integer read FImageNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Ready:Boolean read GetReady;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Locked:Boolean read FLocked;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Changed:Boolean read FChanged;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Readable:Boolean read GetReadable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Writeable:Boolean read GetWriteable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Eraseable:Boolean read GetEraseable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read FAttributes;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ImageType:TImageType read FImageType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MediaType:TMediaType read FMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FloppyType:TFloppyType read FFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Cylinders:LongWord read FCylinders;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Heads:LongWord read FHeads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Sectors:LongWord read FSectors;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LogicalShiftCount:Word read FLogicalShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SectorSize:Word read FSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorShiftCount:Word read FSectorShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PartitionId:Byte read FPartitionId;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FileSysType:TFileSysType read FFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Device:TDiskDevice read FDevice write SetDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterOwner:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ImageInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Allocated(ASector:LongWord; ACount:Word):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MountImage:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountImage:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertImage:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectImage:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ConvertImage(AImageType:TImageType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyImage(ADest:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkImage(const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandImage(const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Recognizer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TRecognizer = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FAllowDrive:Boolean;</code>
 +
| Enable mounting with an attached Drive
 +
|-
 +
| <code>FAllowDefault:Boolean;</code>
 +
| Enable mounting of unrecognized media (Unpartitioned Media Only)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDirtyCheck:Boolean;</code>
 +
| Enable checking Volume when dirty flag set on mount
 +
|-
 +
| <code>FQuickCheck:Boolean;</code>
 +
| Enable quick check only when checking dirty Volume
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPartitioner:TDiskPartitioner;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFormatter:TDiskFormatter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDefragger:TDiskDefragger;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FConverter:TDiskConverter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRepairer:TDiskRepairer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FResizer:TDiskResizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCopier:TDiskCopier;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FImager:TDiskImager;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property AllowDrive:Boolean read FAllowDrive write FAllowDrive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AllowDefault:Boolean read FAllowDefault write FAllowDefault;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DirtyCheck:Boolean read FDirtyCheck write FDirtyCheck;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property QuickCheck:Boolean read FQuickCheck write FQuickCheck;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Partitioner:TDiskPartitioner read FPartitioner write FPartitioner;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Formatter:TDiskFormatter read FFormatter write FFormatter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Defragger:TDiskDefragger read FDefragger write FDefragger;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Converter:TDiskConverter read FConverter write FConverter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Repairer:TDiskRepairer read FRepairer write FRepairer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Resizer:TDiskResizer read FResizer write FResizer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Copier:TDiskCopier read FCopier write FCopier;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Imager:TDiskImager read FImager write FImager;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecognizePartitionId(APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RecognizeBootSector(ABootSector:PBootSector; const AStartSector,ASectorCount:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecognizePartition(APartition:TDiskPartition):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RecognizeVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MountVolume(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecognizeImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MountImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Redirector'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TRedirector = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDrives:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RedirectPath(const APath:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RedirectDrive(ADrive:TDiskDrive):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AttachPath(const APath:String; ADrive:TDiskDrive):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DetachDrive(ADrive:TDiskDrive):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk partitioner'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskPartitioner = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FInitChar:Byte;</code>
 +
| Character to initialize sectors when adding partitions
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckLogical(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckExtended(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetLogicalChild(ADevice:TDiskDevice; APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetExtendedSibling(ADevice:TDiskDevice; AParent:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetExtendedParent(ADevice:TDiskDevice; AParent:TDiskPartition; AStart:LongWord; ALock:Boolean; AState:LongWord):TDiskPartition;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetEndCHS(ADevice:TDiskDevice; AStart,ACount:LongWord; var ACylinder,AHead,ASector:Word):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetStartCHS(ADevice:TDiskDevice; AStart,ACount:LongWord; var ACylinder,AHead,ASector:Word):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorCount(ADevice:TDiskDevice; AStart,ACount:LongWord):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetStartSector(ADevice:TDiskDevice; AExtended,ALogical:Boolean; AStart:LongWord; var ACount:LongWord):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorOffset(ADevice:TDiskDevice; AParent:TDiskPartition; AExtended:Boolean; AStart:LongWord):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPartitionId(ADevice:TDiskDevice; AParent:TDiskPartition; AStart,ACount:LongWord; APartitionId:Byte):Byte; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function InitPartition(ADevice:TDiskDevice; AParent:TDiskPartition; AStart,ACount:LongWord; APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreatePartitionRecord(ADevice:TDiskDevice; ARecord:PPartitionRecord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreatePartitionEntry(ADevice:TDiskDevice; AStart,ACount,AOffset:LongWord; APartitionId:Byte; AActive:Boolean; var AEntry:TPartitionEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FillSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; AValue:Byte):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; const ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property InitChar:Byte read FInitChar write FInitChar;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptPartition(ADevice:TDiskDevice; APartition,AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreatePartition(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeletePartition(APartition:TDiskPartition):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte; AOverride:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk formatter'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskFormatter = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FillSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; AValue:Byte):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReadSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; const ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume:TDiskVolume; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp; 
 +
|-
 +
| <code>function FormatVolume(AVolume:TDiskVolume; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk defragger'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskDefragger = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DefragmentVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk converter'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskConverter = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume:TDiskVolume; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ConvertVolume(AVolume:TDiskVolume; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptImage(AImage:TDiskImage; AImageType:TImageType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ConvertImage(AImage:TDiskImage; AImageType:TImageType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk repairer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskRepairer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RepairVolume(AVolume:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk resizer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskResizer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ShrinkVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ShrinkImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk copier'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskCopier = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptVolume(AVolume,ADest:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CopyVolume(AVolume,ADest:TDiskVolume):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptImage(AImage,ADest:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CopyImage(AImage,ADest:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Disk imager'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskImager = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRecognizer:TRecognizer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64;  ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptSnapshot(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot(AImage:TDiskImage):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFileSystem = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADrive:TDiskDrive);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolume:TDiskVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDrive:TDiskDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPathChar:String;</code>
 +
| Path separator character
 +
|-
 +
| <code>FNameChar:String;</code>
 +
| Name separator character
 +
|-
 +
| <code>FFileChar:String;</code>
 +
| File separator character
 +
|-
 +
| <code>FRootChar:String;</code>
 +
| Root specifier character (eg C:)
 +
|-
 +
| <code>FRootName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRootPath:String;</code>
 +
| Root Path must be prefixed with \\.
 +
|-
 +
| <code>FMaxFile:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaxPath:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaxAltFile:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaxAltPath:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaxAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaskAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMountPointTag:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSymbolicLinkTag:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSystemName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolumeName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolumeGUID:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FVolumeSerial:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFileSysType:TFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FStartSector:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSectorCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRoot:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCurrentIndex:LongWord;</code>
 +
| TLS Index for storing current directory
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FChunks:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FTables:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FBlocks:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FEntries:TFileSysTree;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCatalogs:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAcls:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FChunkLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskChunk objects
 +
|-
 +
| <code>FTableLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskTable objects
 +
|-
 +
| <code>FBlockLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskBlock objects
 +
|-
 +
| <code>FEntryLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskEntry objects
 +
|-
 +
| <code>FCatalogLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskCatalog objects
 +
|-
 +
| <code>FSecurityLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskSecurity objects
 +
|-
 +
| <code>FAclLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskAcl objects
 +
|-
 +
| <code>FAceLocal:TMutexHandle;</code>
 +
| Local Lock shared by all DiskAce objects
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FMarkDirty:Boolean;</code>
 +
| Mark the volume as dirty when dismounting (Either by request or due to error)
 +
|-
 +
| <code>FMarkClean:Boolean;</code>
 +
| Mark the volume as clean when dismounting (Only by request)
 +
|-
 +
| <code>FMarkError:Boolean;</code>
 +
| Error was encounted on volume, mark as dirty when dismounting
 +
|-
 +
| <code>FLogDirty:Boolean;</code>
 +
| LogFile was dirty when mounted (if supported by filesystem)
 +
|-
 +
| <code>FMountDirty:Boolean;</code>
 +
| Volume was dirty when mounted, leave marked as dirty when dismounting
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FOemConvert:Boolean;</code>
 +
| Default to True overidden by descendants if not supported
 +
|-
 +
| <code>FNumericTail:Boolean;</code>
 +
| Default to True overidden by descendants if not supported
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReadOnly:Boolean;</code>
 +
| Default to False overidden by descendants if True
 +
|-
 +
| <code>FLongNames:Boolean;</code>
 +
| Default to True overidden by descendants if not supported
 +
|-
 +
| <code>FDataStreams:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FReparsePoints:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FCaseSensitive:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FCasePreserved:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FUnicodeNames:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FPersistentAcls:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FFileCompression:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FVolumeQuotas:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FSparseFiles:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FRemoteStorage:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FVolumeCompressed:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FObjectIds:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FEncryption:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBootCatalog:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FVirtualVolume:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FFolderEncryption:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
| <code>FFolderCompression:Boolean;</code>
 +
| Default to False overidden by descendants if supported
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBootSector:LongWord;</code>
 +
| Relative to StartSector
 +
|-
 +
| <code>FBootBackup:LongWord;</code>
 +
| Relative to StartSector
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSectorBuffer:Pointer;</code>
 +
| Buffer of exactly sector size
 +
|-
 +
| <code>FSectorLock:TMutexHandle;</code>
 +
| Lock for sector buffer
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SectorLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetDrive(ADrive:TDiskDrive); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetVolume(AVolume:TDiskVolume); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPathChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetNameChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRootChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRootName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetRootPath:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSystemName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetVolumeGUID:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadPathChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadNameChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadFileChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadRootChar:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadRootName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadRootPath:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadMaxFile:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadMaxPath:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadMaxAltFile:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadMaxAltPath:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadAttributes:LongWord; virtual;</code>
 +
| Get the Volume Attributes
 +
|-
 +
| <code>function LoadMaxAttributes:LongWord; virtual;</code>
 +
| Get the Maximum File Attributes (used when setting file attributes)
 +
|-
 +
| <code>function LoadMaskAttributes:LongWord; virtual;</code>
 +
| Get the File Attributes Mask (used when getting file attributes)
 +
|-
 +
| <code>function LoadMountPointTag:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadSymbolicLinkTag:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadSystemName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadVolumeName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadVolumeGUID:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadVolumeSerial:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadFileSysType:TFileSysType; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadSectorSize:Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadStartSector:Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadSectorCount:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCurrent:TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrent(ACurrent:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FillSectors(ASector,ACount:LongWord; AValue:Byte):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadSectors(ASector,ACount:LongWord; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteSectors(ASector,ACount:LongWord; const ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTables:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadBlocks:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadEntries(AParent:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadCatalogs:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTable(ATableNo:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadBlock(ABlockNo:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|Note: LoadEntry can be implemented if needed but is not defined here.
 +
|-
 +
|colspan="2"|Note: LoadCatalog can be implemented if needed but is not defined here.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UnloadEntries(AParent:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddCatalog(AEntry:TDiskEntry; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveCatalog(ACatalog:TDiskCatalog):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckCatalog(ACatalog:TDiskCatalog; ALock:Boolean; AState:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCatalogByNo(ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalogByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalogByNext(APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetNextCatalogNo:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMaxCatalogNo:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddHardlink(AEntry,AParent:TDiskEntry; const AName:String; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveHardlink(AParent,AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddMountPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveMountPoint(AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddJunctionPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveJunctionPoint(AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddSymbolicLink(AParent:TDiskEntry; const AName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddSymbolicLinkEx(AParent:TDiskEntry; const AName,AAltName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveSymbolicLink(AParent,AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetTable(ATable:TDiskTable):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetBlock(ABlock:TDiskBlock):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCatalog(ACatalog:TDiskCatalog):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetReparse(AParent,AEntry:TDiskEntry; AReparse:TDiskReparse):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetSecurity(AParent,AEntry:TDiskEntry; ASecurity:TDiskSecurity):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetTable(ATableNo:LongWord):TDiskTable; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTableEx(ATableNo:LongWord; AWrite:Boolean):TDiskTable; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetBlock(ABlockNo:LongWord):TDiskBlock; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEntryEx(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalog(ACatalogNo:LongWord):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCatalogEx(ACatalogNo:LongWord; AWrite:Boolean):TDiskCatalog; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetReparse(AEntry:TDiskEntry):TDiskReparse; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSecurity(AEntry:TDiskEntry):TDiskSecurity; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MatchEntry(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MatchEntryEx(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny,AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetEntryPath(AEntry:TDiskEntry; AAltName:Boolean):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEntryName(AEntry:TDiskEntry; AAltName:Boolean):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SplitPath(const APath:String; var ARelative:Boolean; AFolders:TStrings; var AName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SplitName(const AName:String; var AFile,AStream:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SplitFile(const AFile:String; var AName,AExt:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SplitStream(const AStream:String; var AName,AType:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function BuildPath(ARelative:Boolean; AFolders:TLinkedStringList; const AName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BuildName(const AFile,AStream:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BuildFile(const AName,AExt:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BuildStream(const AName,AType:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckName(const AName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckAltName(const AAltName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CompareAltName(const AAltName,AMatch:String; AWildcard:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckLinkName(const AName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSecurityFromDescriptor(ADescriptor:Pointer):TDiskSecurity; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDescriptorFromSecurity(ASecurity:TDiskSecurity; ADescriptor:Pointer; var ASize:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Volume:TDiskVolume read FVolume write SetVolume;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Drive:TDiskDrive read FDrive write SetDrive;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PathChar:String read GetPathChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property NameChar:String read GetNameChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FileChar:String read GetFileChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RootChar:String read GetRootChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RootName:String read GetRootName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RootPath:String read GetRootPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxFile:Integer read FMaxFile;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxPath:Integer read FMaxPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxAltFile:Integer read FMaxAltFile;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxAltPath:Integer read FMaxAltPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read FAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxAttributes:LongWord read FMaxAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaskAttributes:LongWord read FMaskAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MountPointTag:LongWord read FMountPointTag;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SymbolicLinkTag:LongWord read FSymbolicLinkTag;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SystemName:String read GetSystemName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeName:String read GetVolumeName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeGUID:String read GetVolumeGUID;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property VolumeSerial:LongWord read FVolumeSerial;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FileSysType:TFileSysType read FFileSysType;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SectorSize:Word read FSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read FStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:LongWord read FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property MarkDirty:Boolean read FMarkDirty write FMarkDirty;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MarkClean:Boolean read FMarkClean write FMarkClean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MarkError:Boolean read FMarkError;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LogDirty:Boolean read FLogDirty;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MountDirty:Boolean read FMountDirty;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterConvert:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileSystemInit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MountFileSystem:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DismountFileSystem:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateCatalog(const AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteCatalog(ACatalogNo:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindCatalogClose(var ASearchRec:TCatalogSearchRec); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDriveLabel:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetDriveLabel(const ALabel:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveSerial:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetDriveSerial(ASerial:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDriveFreeSpace:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveFreeSpaceEx:Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveTotalSpace:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDriveTotalSpaceEx:Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileOpen(const FileName:String; Mode:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileCreate(const FileName:String):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteFile(const FileName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FileClose(Handle:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RenameFile(const OldName,NewName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSeek(Handle,Offset,Origin:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSeekEx(Handle:Integer; const Offset:Int64; Origin:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileFlush(Handle:Integer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileTruncate(Handle:Integer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FilePos(Handle:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FilePosEx(Handle:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileGetAttr(const FileName:String):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileGetDate(Handle:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileGetSize(Handle:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileGetSizeEx(Handle:Integer):Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetAttr(const FileName:String; Attr:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetDate(Handle:Integer; Age:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetSize(Handle:Integer; Size:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetSizeEx(Handle:Integer; const Size:Int64):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileRead(Handle:Integer; var Buffer; Count:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileWrite(Handle:Integer; const Buffer; Count:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateDir(const DirName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDir(const DirName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCurrentDir:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetCurrentDir(const DirName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindOne(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindAll(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstEx(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextEx(var SearchRec:TFileSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindCloseEx(var SearchRec:TFileSearchRec); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstStream(const FileName:String; var SearchRec:TStreamSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextStream(var SearchRec:TStreamSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindStreamClose(var SearchRec:TStreamSearchRec); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstFileName(const FileName:String; var SearchRec:TLinkSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextFileName(var SearchRec:TLinkSearchRec):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FindFileNameClose(var SearchRec:TLinkSearchRec); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateHardLink(const LinkName,FileName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteHardLink(const LinkName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateMountPoint(const PathName,VolumeName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteMountPoint(const PathName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateJunctionPoint(const PathName,FolderName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteJunctionPoint(const PathName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSymbolicLink(const LinkName,TargetName:String; Directory:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateSymbolicLinkEx(const LinkName,ShortName,TargetName:String; Directory:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSymbolicLink(const LinkName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMountPointTarget(const PathName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetJunctionPointTarget(const PathName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSymbolicLinkTarget(const LinkName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetFileShortName(const FileName,ShortName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileShortNameEx(Handle:Integer; const ShortName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFileSecurity(const FileName:String; Descriptor:Pointer; var Size:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileSecurity(const FileName:String; Descriptor:Pointer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPathName(const FileName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetShortName(const FileName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLongName(const FileName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTrueName(const FileName:String):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileCreateEx(const FileName,ShortName:String):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateDirEx(const DirName,ShortName:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileGetAttrEx(Handle:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FileGetDateEx(Handle:Integer):TFileTime; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FileSetDateEx(Handle:Integer; Age:TFileTime):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFileTime(Handle:Integer; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SetFileTime(Handle:Integer; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CloseFile(Handle:THandle):Boolean; virtual;</code>
 +
| Equivalent to Win32 CloseHandle
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk chunk'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskChunk = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk chunk for multi segment Volumes such as NWFS/NSS.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskTable = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk table such as a FAT or MFT table.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FTableNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property TableNo:LongWord read FTableNo write FTableNo;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk block'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskBlock = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk block such as a FAT entry.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FBlockNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property BlockNo:LongWord read FBlockNo write FBlockNo;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk entry'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskEntry = class(TTreeObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk entry such as a File, Folder, Stream or Label.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FHash:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAltName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAltHash:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSize:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteTime:TFileTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCreateTime:TFileTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAccessTime:TFileTime;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReparseTag:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FEntriesLoaded:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReferenceCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRecent:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetName(const AName:String);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetAltName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetAltName(const AAltName:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName write SetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Hash:LongWord read FHash;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AltName:String read GetAltName write SetAltName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AltHash:LongWord read FAltHash;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Size:Int64 read FSize write FSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read FAttributes write FAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteTime:TFileTime read FWriteTime write FWriteTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CreateTime:TFileTime read FCreateTime write FCreateTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property AccessTime:TFileTime read FAccessTime write FAccessTime;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReparseTag:LongWord read FReparseTag write FReparseTag;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property EntriesLoaded:Boolean read FEntriesLoaded write FEntriesLoaded;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReferenceCount:LongWord read FReferenceCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Recent:TDiskEntry read FRecent write FRecent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddReference:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveReference:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindFirstName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindPrevName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindNextName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindLastName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk catalog'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskCatalog = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk catalog such as a bootable section.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FName:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FHash:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPath:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCatalogNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FMediaType:TMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFloppyType:TFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAttributes:LongWord;</code>
 +
| Initial/Default, Bootable, No Emulation, 1.2M, 1.44M, 2.88M, Hard Disk
 +
|-
 +
| <code>FSectorSize:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSectorCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetName(const AName:String); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetPath:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetPath(const APath:String); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMediaType:TMediaType; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMediaType(AMediaType:TMediaType); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFloppyType:TFloppyType; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetFloppyType(AFloppyType:TFloppyType); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetAttributes:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetAttributes(AAttributes:LongWord); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSectorSize(ASectorSize:Word); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSectorCount(const ASectorCount:Int64); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Name:String read GetName write SetName;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Hash:LongWord read FHash;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Path:String read GetPath write SetPath;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CatalogNo:LongWord read FCatalogNo write FCatalogNo;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property MediaType:TMediaType read GetMediaType write SetMediaType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FloppyType:TFloppyType read GetFloppyType write SetFloppyType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Attributes:LongWord read GetAttributes write SetAttributes;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorSize:Word read GetSectorSize write SetSectorSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read GetSectorCount write SetSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReaderLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReaderUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriterUnlock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk reparse'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskReparse = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetTarget:String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetTarget(const ATarget:String); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Target:String read GetTarget write SetTarget;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk security'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskSecurity = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A disk security descriptor.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>constructor CreateFromSecurity(ALocalLock:TMutexHandle; ASecurity:TDiskSecurity); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>constructor CreateFromDescriptor(ALocalLock:TMutexHandle; ADescriptor:Pointer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FAcls:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAclLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function SecuritySize:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SecurityDescriptor:Pointer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SecurityDescriptorEx(ALocal:Boolean):Pointer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InheritedDescriptor:Pointer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergedDescriptor(AChild:Pointer):Pointer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseDescriptor(ADescriptor:Pointer; AInherited,AMerged:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CopyToSecurity(ASecurity:TDiskSecurity):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyFromSecurity(ASecurity:TDiskSecurity):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CopyToDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyToDescriptorEx(ADescriptor:Pointer; ASize:LongWord; ALocal:Boolean):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CopyFromDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk access control list'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskAcl = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A security descriptor access control list.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FAces:TFileSysList;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FAceLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Disk access control entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDiskAce = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A security descriptor access control entry.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ALocalLock:TMutexHandle);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Cache'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TCache = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A simple block cache with Read Only / Read Write modes and Free/Clean/Dirty page tracking. (No longer used)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBuffer:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheMode:TCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheState:TCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReadCached:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FReadDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FWriteBack:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteThrough:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FHitCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMissCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFailCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSuccessCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFlushCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDiscardCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FUnknownCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirstPage:TCachePage;</code>
 +
| First Cache Page (Any State)
 +
|-
 +
| <code>FLastPage:TCachePage;</code>
 +
| Last Cache Page (Any State)
 +
|-
 +
| <code>FFirstEmpty:TCachePage;</code>
 +
| First Free Page
 +
|-
 +
| <code>FLastEmpty:TCachePage;</code>
 +
| Last Free Page
 +
|-
 +
| <code>FFirstClean:TCachePage;</code>
 +
| First Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FLastClean:TCachePage;</code>
 +
| Last Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FFirstDirty:TCachePage;</code>
 +
| First Dirty Page (Used with Write pending)
 +
|-
 +
| <code>FLastDirty:TCachePage;</code>
 +
| Last Dirty Page (Used with Write pending)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FTimer:TCacheTimer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FThread:TCacheThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemovePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddUnknown(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UpdateClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UpdateDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RoundPageSize(APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property PageSize:LongWord read FPageSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageCount:LongWord read FPageCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheSize:LongWord read FCacheSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheMode:TCacheMode read FCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheState:TCacheState read FCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheTimeout:LongWord read FCacheTimeout;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReadCached:Int64 read FReadCached;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReadDirect:Int64 read FReadDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property WriteBack:Int64 read FWriteBack;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteThrough:Int64 read FWriteThrough;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteDirect:Int64 read FWriteDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HitCount:Int64 read FHitCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MissCount:Int64 read FMissCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FailCount:Int64 read FFailCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SuccessCount:Int64 read FSuccessCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FlushCount:Int64 read FFlushCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DiscardCount:Int64 read FDiscardCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UnknownCount:Int64 read FUnknownCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenCache(ACacheSize,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseCache:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEmptyPage:TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DiscardPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FlushPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushPageEx(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Cache extended'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TCacheEx = class(TCache)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A modified version of TCache which tracks the last used page for faster repeat access. (No longer used)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLastUsed:TCachePage;</code>
 +
| Most recently used Page
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Hash cache'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>THashCache = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: A block cache with hash keys for faster page lookup.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FKeyBits:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FKeyMask:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FKeyBuckets:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBuffer:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheKeys:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheMode:TCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheState:TCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFlushTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDiscardTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReadCached:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FReadDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FWriteBack:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteThrough:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FHitCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMissCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFailCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSuccessCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFlushCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDiscardCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FUnknownCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirstPage:TCachePage;</code>
 +
| First Cache Page (Any State)
 +
|-
 +
| <code>FLastPage:TCachePage;</code>
 +
| Last Cache Page (Any State)
 +
|-
 +
| <code>FFirstEmpty:TCachePage;</code>
 +
| First Free Page
 +
|-
 +
| <code>FLastEmpty:TCachePage;</code>
 +
| Last Free Page
 +
|-
 +
| <code>FFirstClean:TCachePage;</code>
 +
| First Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FLastClean:TCachePage;</code>
 +
| Last Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FFirstDirty:TCachePage;</code>
 +
| First Dirty Page (Used with Write pending)
 +
|-
 +
| <code>FLastDirty:TCachePage;</code>
 +
| Last Dirty Page (Used with Write pending)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FTimer:THashCacheTimer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FThread:THashCacheThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemovePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddUnknown(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UpdateClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UpdateDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RoundPageSize(APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AdjustCacheKeys(ACacheKeys:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CalculatePageCount(ADevice:TDiskDevice):Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CalculatePageShift(ADevice:TDiskDevice):Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CalculatePageMask(ADevice:TDiskDevice):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function KeyLink(APage:THashCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function KeyUnlink(APage:THashCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function KeyFirst(AKeyHash:LongWord):THashCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property PageSize:LongWord read FPageSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageCount:LongWord read FPageCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheSize:LongWord read FCacheSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheKeys:LongWord read FCacheKeys;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheMode:TCacheMode read FCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheState:TCacheState read FCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FlushTimeout:LongWord read FFlushTimeout;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DiscardTimeout:LongWord read FDiscardTimeout;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReadCached:Int64 read FReadCached;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReadDirect:Int64 read FReadDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property WriteBack:Int64 read FWriteBack;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteThrough:Int64 read FWriteThrough;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteDirect:Int64 read FWriteDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HitCount:Int64 read FHitCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MissCount:Int64 read FMissCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FailCount:Int64 read FFailCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SuccessCount:Int64 read FSuccessCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FlushCount:Int64 read FFlushCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DiscardCount:Int64 read FDiscardCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UnknownCount:Int64 read FUnknownCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseCache:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceWrite(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEmptyPage:TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DiscardPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FlushPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushPageEx(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Incremental cache'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TIncrementalCache = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: An expanded THashCache with incremental read ahead and dirty region write back.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FKeyBits:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FKeyMask:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FKeyBuckets:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBuffer:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageCount:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheKeys:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheMode:TCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCacheState:TCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFlushTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDiscardTimeout:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReadCached:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FReadDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FWriteBack:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteThrough:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FWriteDirect:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FHitCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMissCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFailCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSuccessCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFlushCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDiscardCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FUnknownCount:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirstPage:TCachePage;</code>
 +
| First Cache Page (Any State)
 +
|-
 +
| <code>FLastPage:TCachePage;</code>
 +
| Last Cache Page (Any State)
 +
|-
 +
| <code>FFirstEmpty:TCachePage;</code>
 +
| First Free Page
 +
|-
 +
| <code>FLastEmpty:TCachePage;</code>
 +
| Last Free Page
 +
|-
 +
| <code>FFirstClean:TCachePage;</code>
 +
| First Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FLastClean:TCachePage;</code>
 +
| Last Clean Page (Used with no Write pending)
 +
|-
 +
| <code>FFirstDirty:TCachePage;</code>
 +
| First Dirty Page (Used with Write pending)
 +
|-
 +
| <code>FLastDirty:TCachePage;</code>
 +
| Last Dirty Page (Used with Write pending)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FTimer:TIncrementalCacheTimer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FThread:TIncrementalCacheThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemovePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddUnknown(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function UpdateClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UpdateDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RoundPageSize(APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AdjustCacheKeys(ACacheKeys:LongWord):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CalculatePageCount(ADevice:TDiskDevice):Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CalculatePageShift(ADevice:TDiskDevice):Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CalculatePageMask(ADevice:TDiskDevice):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function KeyLink(APage:THashCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function KeyUnlink(APage:THashCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function KeyFirst(AKeyHash:LongWord):THashCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkClean(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlinkDirty(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PrepareDeviceRead(ADevice:TDiskDevice; APage:TCachePage; var ASector:LongWord; var ACount:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PrepareDeviceWrite(ADevice:TDiskDevice; APage:TCachePage; var ASector:LongWord; var ACount:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property PageSize:LongWord read FPageSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageCount:LongWord read FPageCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheSize:LongWord read FCacheSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheKeys:LongWord read FCacheKeys;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheMode:TCacheMode read FCacheMode;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property CacheState:TCacheState read FCacheState;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FlushTimeout:LongWord read FFlushTimeout;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DiscardTimeout:LongWord read FDiscardTimeout;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReadCached:Int64 read FReadCached;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReadDirect:Int64 read FReadDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property WriteBack:Int64 read FWriteBack;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteThrough:Int64 read FWriteThrough;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteDirect:Int64 read FWriteDirect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HitCount:Int64 read FHitCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MissCount:Int64 read FMissCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FailCount:Int64 read FFailCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SuccessCount:Int64 read FSuccessCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FlushCount:Int64 read FFlushCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DiscardCount:Int64 read FDiscardCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UnknownCount:Int64 read FUnknownCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseCache:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceWrite(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetEmptyPage:TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DiscardPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FlushPage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushPageEx(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Cache page'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TCachePage = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FDevice:TDiskDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FSector:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCount:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPageTime:Int64;</code>
 +
| Time Page was Allocated from Empty (Ticks)
 +
|-
 +
| <code>FWriteTime:Int64;</code>
 +
| Time Page was Allocated to Dirty (Ticks)
 +
|-
 +
| <code>FPageType:TCachePageType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPageState:TCachePageState;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPrevPage:TCachePage;</code>
 +
| Previous page in Page list
 +
|-
 +
| <code>FNextPage:TCachePage;</code>
 +
| Next page in Page list
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FPrevLink:TCachePage;</code>
 +
| Previous page in Empty/Clean/Dirty list
 +
|-
 +
| <code>FNextLink:TCachePage;</code>
 +
| Next page in Empty/Clean/Dirty list
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Device:TDiskDevice read FDevice write FDevice;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Data:Pointer read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Sector:LongWord read FSector write FSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Count:Word read FCount write FCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PageTime:Int64 read FPageTime write FPageTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property WriteTime:Int64 read FWriteTime write FWriteTime;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageType:TCachePageType read FPageType write FPageType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PageState:TCachePageState read FPageState write FPageState;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PrevPage:TCachePage read FPrevPage write FPrevPage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property NextPage:TCachePage read FNextPage write FNextPage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property PrevLink:TCachePage read FPrevLink write FPrevLink;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property NextLink:TCachePage read FNextLink write FNextLink;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Hash cache page'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>THashCachePage = class(TCachePage)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FKeyHash:LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FKeyPrev:THashCachePage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FKeyNext:THashCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property KeyHash:LongWord read FKeyHash write FKeyHash;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property KeyPrev:THashCachePage read FKeyPrev write FKeyPrev;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property KeyNext:THashCachePage read FKeyNext write FKeyNext;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Incremental cache page'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TIncrementalCachePage = class(THashCachePage)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FReadSector:LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FReadCount:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FDirtySector:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDirtyCount:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property ReadSector:LongWord read FReadSector write FReadSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReadCount:Word read FReadCount write FReadCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DirtySector:LongWord read FDirtySector write FDirtySector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property DirtyCount:Word read FDirtyCount write FDirtyCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DirtyData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Cache timer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TCacheTimer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:TCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:TCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FInterval:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCheckTimer:TTimerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FProcessSemaphore:TSemaphoreHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirst:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Dequeue(AMax:Integer):TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FirstKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteKey(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DecrementKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function StartTimer(AInterval:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function StopTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Hash cache timer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>THashCacheTimer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:THashCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:THashCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FInterval:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCheckTimer:TTimerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FProcessSemaphore:TSemaphoreHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirst:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Dequeue(AMax:Integer):TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FirstKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteKey(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DecrementKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function StartTimer(AInterval:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function StopTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Incremental cache timer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TIncrementalCacheTimer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:TIncrementalCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:TIncrementalCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FInterval:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCheckTimer:TTimerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FProcessSemaphore:TSemaphoreHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirst:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:PCacheTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Dequeue(AMax:Integer):TCachePage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FirstKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteKey(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DecrementKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function StartTimer(AInterval:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function StopTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnschedulePage(APage:TCachePage):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Cache thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TCacheThread = class(TThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:TCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:TCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execute; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Hash cache thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>THashCacheThread = class(TThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:THashCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:THashCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execute; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Incremental cache thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TIncrementalCacheThread = class(TThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ACache:TIncrementalCache);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FCache:TIncrementalCache;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execute; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Entry timer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TEntryTimer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDriver:TFileSysDriver;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FInterval:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCheckTimer:TTimerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FProcessTimer:TTimerHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFirst:PEntryTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:PEntryTimerItem;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Dequeue:TDiskEntry;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FirstKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertKey(AEntry:TDiskEntry; AKey:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteKey(AEntry:TDiskEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DecrementKey:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function StartTimer(AInterval:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function StopTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ProcessTimer:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ScheduleEntry(AEntry:TDiskEntry; ATimeout:LongWord):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnscheduleEntry(AEntry:TDiskEntry):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Default recognizer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDefaultRecognizer = class(TRecognizer)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetName:String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function RecognizePartitionId(APartitionId:Byte):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecognizePartition(APartition:TDiskPartition):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Default partitioner'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TDefaultPartitioner = class(TDiskPartitioner)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver; ARecognizer:TRecognizer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function AcceptPartition(ADevice:TDiskDevice; APartition,AParent:TDiskPartition; APartitionId:Byte):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''ATA disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TATADiskController = class(TDiskController)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''ATAPI disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TATAPIDiskController = class(TDiskController)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''SCSI disk contoller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TSCSIDiskController = class(TDiskController)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''USB disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TUSBDiskController = class(TDiskController)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Reset(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Information(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function VendorId(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceId(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Manufacturer(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Product(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SerialNumber(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LBA(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaType(ADevice:TDiskDevice):TMediaType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ready(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Locked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Lockable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ejectable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Readable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Writeable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Removable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ChangeLine(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SectorSize(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorCount(ADevice:TDiskDevice):Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''MMC disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TMMCDiskController = class(TDiskController)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(ADriver:TFileSysDriver);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Erase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Reset(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Information(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function VendorId(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeviceId(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Manufacturer(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Product(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SerialNumber(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LBA(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaType(ADevice:TDiskDevice):TMediaType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ready(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Locked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Lockable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ejectable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Readable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Writeable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Eraseable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Removable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ChangeLine(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SectorSize(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorCount(ADevice:TDiskDevice):Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system handle stream'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFSHandleStream = class(TStream)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(AHandle:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHandle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure SetSize(NewSize:LongInt); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(var Buffer; Count:LongInt):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(const Buffer; Count:LongInt):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Seek(Offset:LongInt; Origin:Word):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Handle:Integer read FHandle;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system file stream'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFSFileStream = class(TFSHandleStream)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(const FileName:String; Mode:Word);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system handle stream extended'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFSHandleStreamEx = class(TStreamEx)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(AHandle:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHandle:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure SetSize(NewSize:LongInt); override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSizeEx(const NewSize:Int64); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(var Buffer; Count:LongInt):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(const Buffer; Count:LongInt):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Seek(Offset:LongInt; Origin:Word):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SeekEx(const Offset:Int64; Origin:Word):Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Handle:Integer read FHandle;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''File system file stream extended'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TFSFileStreamEx = class(TFSHandleStreamEx)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>constructor Create(const FileName:String; Mode:Word);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 03:29, 14 March 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



File system driver

[Expand]

TFileSysDriver = class(TObject)

File system list

[Expand]

TFileSysList = class(TLinkedObjList)

File system list extended

[Expand]

TFileSysListEx = class(TLinkedObjList)

File system tree

[Expand]

TFileSysTree = class(TLinkedObjTree)

Disk drive

[Expand]

TDiskDrive = class(TListObject)

Raw handle

[Expand]

TRawHandle = class(TListObject)

Enumerate handle

[Expand]

TEnumHandle = class(TListObject)

File handle

[Expand]

TFileHandle = class(TListObject)

Find handle

[Expand]

TFindHandle = class(TListObject)

Disk controller

[Expand]

TDiskController = class(TListObject)

Disk device

[Expand]

TDiskDevice = class(TListObject)

Disk partition

[Expand]

TDiskPartition = class(TListObject)

Disk volume

[Expand]

TDiskVolume = class(TListObject)

Disk image

[Expand]

TDiskImage = class(TListObject)

Recognizer

[Expand]

TRecognizer = class(TListObject)

Redirector

[Expand]

TRedirector = class(TListObject)

Disk partitioner

[Expand]

TDiskPartitioner = class(TObject)

Disk formatter

[Expand]

TDiskFormatter = class(TObject)

Disk defragger

[Expand]

TDiskDefragger = class(TObject)

Disk converter

[Expand]

TDiskConverter = class(TObject)

Disk repairer

[Expand]

TDiskRepairer = class(TObject)

Disk resizer

[Expand]

TDiskResizer = class(TObject)

Disk copier

[Expand]

TDiskCopier = class(TObject)

Disk imager

[Expand]

TDiskImager = class(TObject)

File system

[Expand]

TFileSystem = class(TListObject)

Disk chunk

[Expand]

TDiskChunk = class(TListObject)

Disk table

[Expand]

TDiskTable = class(TListObject)

Disk block

[Expand]

TDiskBlock = class(TListObject)

Disk entry

[Expand]

TDiskEntry = class(TTreeObject)

Disk catalog

[Expand]

TDiskCatalog = class(TListObject)

Disk reparse

[Expand]

TDiskReparse = class(TObject)

Disk security

[Expand]

TDiskSecurity = class(TObject)

Disk access control list

[Expand]

TDiskAcl = class(TListObject)

Disk access control entry

[Expand]

TDiskAce = class(TListObject)

Cache

[Expand]

TCache = class(TObject)

Cache extended

[Expand]

TCacheEx = class(TCache)

Hash cache

[Expand]

THashCache = class(TObject)

Incremental cache

[Expand]

TIncrementalCache = class(TObject)

Cache page

[Expand]

TCachePage = class(TObject)

Hash cache page

[Expand]

THashCachePage = class(TCachePage)

Incremental cache page

[Expand]

TIncrementalCachePage = class(THashCachePage)

Cache timer

[Expand]

TCacheTimer = class(TObject)

Hash cache timer

[Expand]

THashCacheTimer = class(TObject)

Incremental cache timer

[Expand]

TIncrementalCacheTimer = class(TObject)

Cache thread

[Expand]

TCacheThread = class(TThread)

Hash cache thread

[Expand]

THashCacheThread = class(TThread)

Incremental cache thread

[Expand]

TIncrementalCacheThread = class(TThread)

Entry timer

[Expand]

TEntryTimer = class(TObject)

Default recognizer

[Expand]

TDefaultRecognizer = class(TRecognizer)

Default partitioner

[Expand]

TDefaultPartitioner = class(TDiskPartitioner)

ATA disk controller

[Expand]

TATADiskController = class(TDiskController)

ATAPI disk controller

[Expand]

TATAPIDiskController = class(TDiskController)

SCSI disk contoller

[Expand]

TSCSIDiskController = class(TDiskController)

USB disk controller

[Expand]

TUSBDiskController = class(TDiskController)

MMC disk controller

[Expand]

TMMCDiskController = class(TDiskController)

File system handle stream

[Expand]

TFSHandleStream = class(TStream)

File system file stream

[Expand]

TFSFileStream = class(TFSHandleStream)

File system handle stream extended

[Expand]

TFSHandleStreamEx = class(TStreamEx)

File system file stream extended

[Expand]

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;


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