Difference between revisions of "Unit Filesystem"
Line 3,427: | Line 3,427: | ||
---- | ---- | ||
− | '' | + | |
+ | '''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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FCache:THashCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FImages:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDrives:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolumes:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDevices:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPartitions:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FControllers:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizers:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRedirectors:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFileSystems:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FRawHandles:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FEnumHandles:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFileHandles:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFindHandles:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FCurrentIndex:LongWord;</code> | ||
+ | | TLS Index for storing current drive | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FEntryTimer:TEntryTimer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDefaultRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCurrent:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrent(ACurrent:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindMatchingFile(ADrive:TDiskDrive; AVolume:TDiskVolume; var ASearchRec:TSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Cache:THashCache read FCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property AllowFloppy:Boolean read FAllowFloppy write FAllowFloppy;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AllowDrives:Boolean read FAllowDrives write FAllowDrives;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property OemConvert:Boolean read FOemConvert write FOemConvert;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseCache:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushCache(AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DiscardCache(AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCacheStatistics(var AStatistics:TCacheStatistics):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCatalogByNo(const APath:String; ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalogByName(const APath,AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalogByNext(const APath:String; APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddImage(AImage:TDiskImage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveImage(AImage:TDiskImage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetImageByNo(AImageNo:Integer; ALock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetImageByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetImageByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetImageByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetImagesByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetImageByNext(APrevious:TDiskImage; ALock,AUnlock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextImageNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxImageNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddDrive(ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveDrive(ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDriveByNo(ADriveNo:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByParent(const AParent:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDrivesByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDrivesByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveByNext(APrevious:TDiskDrive; ALock,AUnlock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextDriveNo(AMediaType:TMediaType):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxDriveNo(AMediaType:TMediaType):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddVolume(AVolume:TDiskVolume):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveVolume(AVolume:TDiskVolume):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetVolumeByNo(AVolumeNo:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeByParent(const AParent:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumesByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumesByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeByNext(APrevious:TDiskVolume; ALock,AUnlock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextVolumeNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxVolumeNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddDevice(ADevice:TDiskDevice):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveDevice(ADevice:TDiskDevice):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDeviceByNo(ADeviceNo:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByStorage(AStorage:PStorageDevice; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDevicesByController(AController:TDiskController; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByIdentifier(AController:TDiskController; const AIdentifier:String; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceByNext(APrevious:TDiskDevice; ALock,AUnlock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextDeviceNo(AMediaType:TMediaType):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxDeviceNo(AMediaType:TMediaType):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddPartition(APartition:TDiskPartition):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemovePartition(APartition:TDiskPartition):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPartitionByNo(ADevice:TDiskDevice; APartitionNo:Integer; AExtended,ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByName(ADevice:TDiskDevice; const AName:String; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByEntryNo(ADevice:TDiskDevice; APartition:TDiskPartition; AEntryNo:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionsByDevice(ADevice:TDiskDevice; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionsByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionByNext(APrevious:TDiskPartition; ALock,AUnlock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextPartitionNo(ADevice:TDiskDevice; AExtended:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxPartitionNo(ADevice:TDiskDevice; AExtended:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddController(AController:TDiskController):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveController(AController:TDiskController):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckController(AController:TDiskController; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetControllerByNo(AControllerNo:Integer; ALock:Boolean; AState:LongWord):TDiskController;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetControllerByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskController;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetControllerByNext(APrevious:TDiskController; ALock,AUnlock:Boolean; AState:LongWord):TDiskController;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextControllerNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxControllerNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddRecognizer(ARecognizer:TRecognizer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveRecognizer(ARecognizer:TRecognizer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckRecognizer(ARecognizer:TRecognizer; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRecognizerByImage(AImage:TDiskImage; ALock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizerByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizerByPartition(APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizerByPartitionId(APartitionId:Byte; ALock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizerByBootSector(ABootSector:PBootSector; const AStartSector,ASectorCount:Int64; ALock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizerByNext(APrevious:TRecognizer; ALock,AUnlock:Boolean; AState:LongWord):TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddRedirector(ARedirector:TRedirector):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveRedirector(ARedirector:TRedirector):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckRedirector(ARedirector:TRedirector; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRedirectorByPath(const APath:String; ALock:Boolean; AState:LongWord):TRedirector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRedirectorByDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):TRedirector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRedirectorByNext(APrevious:TRedirector; ALock,AUnlock:Boolean; AState:LongWord):TRedirector;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddFileSystem(AFileSystem:TFileSystem):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveFileSystem(AFileSystem:TFileSystem):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckFileSystem(AFileSystem:TFileSystem; ALock:Boolean; AState:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileSystemByDrive(ADrive:TDiskDrive; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemByVolume(AVolume:TDiskVolume; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemByRootName(const AName:String; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemByRootPath(const APath:String; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemByNext(APrevious:TFileSystem; ALock,AUnlock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LocatePartitions:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LocateVolumes:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LocateDrives:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenRawHandle(ADevice:TDiskDevice; APartition:TDiskPartition; AVolume:TDiskVolume; ADrive:TDiskDrive; AMode:Integer; ALock:Boolean; AState:LongWord):TRawHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseRawHandle(AHandle:TRawHandle):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRawHandleByNext(APrevious:TRawHandle; ALock,AUnlock:Boolean; AState:LongWord):TRawHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReleaseRawHandles(ADevice:TDiskDevice; APartition:TDiskPartition; AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenEnumHandle(AFileSystem:TFileSystem; ALock:Boolean; AState:LongWord):TEnumHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseEnumHandle(AHandle:TEnumHandle):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEnumHandleByNext(APrevious:TEnumHandle; ALock,AUnlock:Boolean; AState:LongWord):TEnumHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function UpdateEnumHandles(ADevice:TDiskDevice; APartition:TDiskPartition; ADrive:TDiskDrive; AVolume:TDiskVolume; AImage:TDiskImage; ACatalog:TDiskCatalog):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseEnumHandles(AFileSystem:TFileSystem):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenFileHandle(AVolume:TDiskVolume; ADrive:TDiskDrive; AParent,AEntry:TDiskEntry; AMode:Integer; ALock:Boolean; AState:LongWord):TFileHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseFileHandle(AHandle:TFileHandle):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileHandleByNext(APrevious:TFileHandle; ALock,AUnlock:Boolean; AState:LongWord):TFileHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckFileHandles(AEntry:TDiskEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseFileHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountFileHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenFindHandle(AVolume:TDiskVolume; ADrive:TDiskDrive; AParent:TDiskEntry; const AMask:String; AAttr,AFlags:LongWord; ALock:Boolean; AState:LongWord):TFindHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseFindHandle(AHandle:TFindHandle):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFindHandleByNext(APrevious:TFindHandle; ALock,AUnlock:Boolean; AState:LongWord):TFindHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function UpdateFindHandles(AEntry:TDiskEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseFindHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountFindHandles(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function InsertDevice(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectDevice(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenDevice(const AName:String; AMode:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure CloseDevice(AHandle:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadDevice(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteDevice(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EraseDevice(AHandle:Integer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekDevice(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstDevice(var ASearchRec:TDiskSearchRec; AVerbose:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextDevice(var ASearchRec:TDiskSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindDeviceClose(var ASearchRec:TDiskSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreatePartition(const ADevice,AParent:String; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeletePartition(const APath:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ModifyPartition(const APath:String; APartitionId:Byte):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ActivatePartition(const APath:String; AActive:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkPartition(const APath:String; const AStart,ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandPartition(const APath:String; const AStart,ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenPartition(const APath:String; AMode:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure ClosePartition(AHandle:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadPartition(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WritePartition(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekPartition(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstPartition(const ADevice:String; var ASearchRec:TPartitionSearchRec; AVerbose:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextPartition(var ASearchRec:TPartitionSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindPartitionClose(var ASearchRec:TPartitionSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateVolume(const AParent:String; ADriveNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteVolume(Const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MountVolume(const AName:String; ADriveNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountVolume(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FormatVolume(const AName:String; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DefragmentVolume(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ConvertVolume(const AName:String; AFileSysType:TFileSysType):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RepairVolume(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyVolume(const AName,ADest:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkVolume(const AName:String; const AStart,ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandVolume(const AName:String; const AStart,ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenVolume(const AName:String; AMode:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure CloseVolume(AHandle:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadVolume(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteVolume(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekVolume(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstVolume(var ASearchRec:TVolumeSearchRec; AVerbose:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextVolume(var ASearchRec:TVolumeSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindVolumeClose(var ASearchRec:TVolumeSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateDrive(const AName,AParent:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteDrive(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FormatDrive(const AName:String; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenDrive(const AName:String; AMode:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure CloseDrive(AHandle:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadDrive(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteDrive(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekDrive(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstDrive(var ASearchRec:TDriveSearchRec; AVerbose:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextDrive(var ASearchRec:TDriveSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindDriveClose(var ASearchRec:TDriveSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MountImage(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountImage(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertImage(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectImage(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ConvertImage(AImageNo:Integer; AImageType:TImageType):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyImage(AImageNo,ADestNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkImage(AImageNo:Integer; const ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandImage(AImageNo:Integer; const ASize:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseImage(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateSnapshot(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSnapshot(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MergeSnapshot(AImageNo:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstImage(var ASearchRec:TImageSearchRec; AVerbose:Boolean):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextImage(var ASearchRec:TImageSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindImageClose(var ASearchRec:TImageSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateCatalog(const APath,AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteCatalog(const APath:String; ACatalogNo:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstCatalog(const APath:String; var ASearchRec:TCatalogSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindCatalogClose(var ASearchRec:TCatalogSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean; </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ScheduleEntry(AEntry:TDiskEntry; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnscheduleEntry(AEntry:TDiskEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPathDrive(const APath:String):Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveType(ADrive:Byte):TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveData(ADrive:Byte):TDriveData;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveAttr(ADrive:Byte):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveLabel(ADrive:Byte):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetDriveLabel(ADrive:Byte; const ALabel:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveSerial(ADrive:Byte):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IsDriveValid(ADrive:Byte):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetValidDrives:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetValidDriveNames:TStringList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetValidDriveStrings:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFreeSpace(ADrive:Byte):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFreeSpaceEx(ADrive:Byte):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveTotalSpace(ADrive:Byte):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveTotalSpaceEx(ADrive:Byte):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCurrentDrive:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrentDrive(const ADrive:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPathVolume(const APath:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeType(const AVolume:String):TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeData(const AVolume:String):TDriveData;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeAttr(const AVolume:String):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeLabel(const AVolume:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetVolumeLabel(const AVolume:String; const ALabel:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeSerial(const AVolume:String):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetVolumeSerial(const AVolume:String; ASerial:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IsVolumeValid(const AVolume:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetValidVolumeNames:TStringList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFreeSpace(const AVolume:String):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFreeSpaceEx(const AVolume:String):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeTotalSpace(const AVolume:String):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeTotalSpaceEx(const AVolume:String):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileOpen(const AFileName:String; AMode:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileCreate(const AFileName:String):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteFile(const AFileName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FileClose(AHandle:Integer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RenameFile(const AOldName,ANewName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSeek(AHandle,AOffset,AOrigin:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileFlush(AHandle:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileTruncate(AHandle:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetEndOfFile(AHandle:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function EndOfFile(AHandle:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FilePos(AHandle:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSize(AHandle:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileAge(const AFileName:String):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileExists(const AFileName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileGetAttr(const AFileName:String):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileGetDate(AHandle:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetAttr(const AFileName:String; AAttr:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetDate(AHandle:Integer; AAge:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileRead(AHandle:Integer; var ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileWrite(AHandle:Integer; const ABuffer; ACount:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateDir(const ADirName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveDir(const ADirName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RenameDir(const AOldName,ANewName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCurrentDir:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCurrentDirEx(ADrive:Byte):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrentDir(const ADirName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DirectoryExists(const ADirName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure ForceDirectories(ADirName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure DeleteTree(const ADirName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNext(var ASearchRec:TSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindClose(var ASearchRec:TSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstStream(const AFileName:String; var ASearchRec:TStreamSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextStream(var ASearchRec:TStreamSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindStreamClose(var ASearchRec:TStreamSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstFileName(const AFileName:String; var ASearchRec:TLinkSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextFileName(var ASearchRec:TLinkSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindFileNameClose(var ASearchRec:TLinkSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateHardLink(const ALinkName,AFileName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteHardLink(const ALinkName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MountPointExists(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateMountPoint(const APathName,AVolumeName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteMountPoint(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function JunctionPointExists(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateJunctionPoint(const APathName,AFolderName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteJunctionPoint(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SymbolicLinkExists(const ALinkName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateSymbolicLinkEx(const ALinkName,AShortName,ATargetName:String; ADirectory:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSymbolicLink(const ALinkName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetMountPointTarget(const APathName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetJunctionPointTarget(const APathName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSymbolicLinkTarget(const ALinkName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SetFileShortName(const AFileName,AShortName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileShortNameEx(AHandle:Integer; const AShortName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileSecurity(const AFileName:String; ADescriptor:Pointer; var ASize:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileSecurity(const AFileName:String; ADescriptor:Pointer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileCopyEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileMove(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileMoveEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPathName(const AFileName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetShortName(const AFileName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLongName(const AFileName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTrueName(const AFileName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddSlash(const AFilePath:String; ALeading,ATrailing:Boolean):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSlash(const AFilePath:String; ALeading,ATrailing:Boolean):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileCreateEx(const AFileName,AShortName:String):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateDirEx(const ADirName,AShortName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileSeekEx(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function EndOfFileEx(AHandle:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FilePosEx(AHandle:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSizeEx(AHandle:Integer):Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileAgeEx(const AFileName:String):TFileTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileGetAttrEx(AHandle:Integer):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileGetDateEx(AHandle:Integer):TFileTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetDateEx(AHandle:Integer ;AAge:TFileTime):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileTime(AHandle:Integer; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileTime(AHandle:Integer; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindOne(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindAll(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextEx(var ASearchRec:TFileSearchRec):Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindCloseEx(var ASearchRec:TFileSearchRec);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDiskFreeSpaceEx(const APathName:String; var AFreeBytesAvailableToCaller,ATotalNumberOfBytes,ATotalNumberOfFreeBytes:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLogicalDrives:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLogicalDriveStrings:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeInformation(const ARootPath:String; var AVolumeName:String; var AVolumeSerialNumber,AMaximumComponentLength,AFileSystemFlags:LongWord; var ASystemName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function QueryDosDevice(const ARootPath:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetVolumeLabel</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AreFileApisANSI:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseFile(AHandle:THandle):Boolean;</code> | ||
+ | | Equivalent to Win32 CloseHandle | ||
+ | |- | ||
+ | | <code>function CopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateFile(const AFileName:String; AAccessMode,AShareMode,ACreateFlags,AFileAttributes:LongWord):THandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushFileBuffers(AHandle:THandle):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBinaryType</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileAttributes(const AFileName:String):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileInformationByHandle</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSizeEx</code> | ||
+ | | Same as FileSizeEx | ||
+ | |- | ||
+ | | <code>function GetFileTime</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function GetFileType</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFullPathName(const AFileName:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetShortPathName(const ALongPath:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTempDrive</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTempFileName</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTempPath</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LockFile</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LockFileEx</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MoveFile(const AExistingName,ANewName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MoveFileEx</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadFileEx</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SearchPath</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetEndOfFile</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function SetFileApisToANSI:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileApisToOEM:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFilePointer(AHandle:THandle; ADistanceToMove:LongWord; var ADistanceToMoveHigh:LongWord; AMoveMethod:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFilePointerEx(AHandle:THandle; const ADistanceToMove:Int64; var ANewFilePointer:Int64; AMoveMethod:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileTime</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function SetHandleCount</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockFile</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockFileEx</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteFile(AHandle:THandle; const ABuffer; ABytesToWrite:LongWord; var ABytesWritten:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteFileEx </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLongPathName(const AShortPath:String):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileShortName</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateDirectory(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateDirectoryEx</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCurrentDirectory:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveDirectory(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrentDirectory(const APathName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstStream </code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function FindNextStream</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateHardlink</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function FindFirstFileName</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function FindNextFileName</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SetVolumeMountPoint</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteVolumeMountPoint</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindFirstVolumeMountPoint</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextVolumeMountPoint</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindVolumeMountPointClose</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateSymbolicLink</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstVolume</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function FindNextVolume</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function FindVolumeClose</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileSecurity</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function SetFileSecurity</code> | ||
+ | | Already Defined | ||
+ | |- | ||
+ | | <code>function GetNamedSecurityInfo</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetNamedSecurityInfo</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDeviceFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDeviceFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPartitionFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetVolumeFromPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDriveFromPath(const APath:String; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFromRaw(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetImageFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCatalogFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TDiskCatalog;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileSystemFromPath(const APath:String; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemFromEnum(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemFromFile(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSystemFromFind(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRawFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TRawHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEnumFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TEnumHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TFileHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFindFromHandle(AHandle:Integer; ALock:Boolean; AState:LongWord):TFindHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>procedure ClearList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDriveNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDriveType:TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFileSystem:TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRoot:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetParent:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetMaxFile:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxPath:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSystemName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeGUID:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeSerial:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDriveType:TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSysType:TFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetFileSystem(AFileSystem:TFileSystem);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRemovable:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognizable:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRecognized:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSectorSize:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetStartSector:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorShiftCount:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartition:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Root:String read GetRoot;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Parent:String read GetParent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Volume:TDiskVolume read FVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DriveNo:Integer read FDriveNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property MaxFile:Integer read GetMaxFile;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxPath:Integer read GetMaxPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read GetAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SystemName:String read GetSystemName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeName:String read GetVolumeName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeGUID:String read GetVolumeGUID;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeSerial:LongWord read GetVolumeSerial;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DriveType:TDriveType read GetDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FileSysType:TFileSysType read GetFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FileSystem:TFileSystem read FFileSystem write SetFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Removable:Boolean read GetRemovable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognizable:Boolean read GetRecognizable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognized:Boolean read GetRecognized write FRecognized;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read GetSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property StartSector:Int64 read GetStartSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:LongWord read GetSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorShiftCount:Word read GetSectorShiftCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Device:TDiskDevice read GetDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Partition:TDiskPartition read GetPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DriveInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Device:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Partition:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Volume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Drive:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>OpenMode:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ShareMode:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Size:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Position:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>FileSystem:TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Handle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>CurrentDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentPartition:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentDrive:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentVolume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentImage:TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentCatalog:TDiskCatalog;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Volume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Drive:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>OpenMode:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ShareMode:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Position:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>DataValue:LongWord;</code> | ||
+ | | Available to FileSystem for private use | ||
+ | |- | ||
+ | | <code>DataOffset:LongWord;</code> | ||
+ | | Available to FileSystem for private use | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ParentEntry:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HandleEntry:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Volume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Drive:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Any:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Mask:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Attr:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ParentEntry:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentEntry:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FControllerNo:Integer;</code> | ||
+ | | \Controller0, \Controller1 etc - See Notes | ||
+ | |- | ||
+ | | <code>FDescription:String;</code> | ||
+ | | Description of Controller - eg "Standard ATA Controller" | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDescription:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFixedDiskCount:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFloppyDiskCount:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LCHStoLBA(ADevice:TDiskDevice; Cylinder,Head,Sector:Word; var LBA:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PCHStoLBA(ADevice:TDiskDevice; Cylinder,Head,Sector:LongWord; var LBA:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LBAtoLCHS(ADevice:TDiskDevice; LBA:LongWord; var Cylinder,Head,Sector:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LBAtoPCHS(ADevice:TDiskDevice; LBA:LongWord; var Cylinder,Head,Sector:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LCHStoPCHS(ADevice:TDiskDevice; LCylinder,LHead,LSector:Word; var PCylinder,PHead,PSector:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PCHStoLCHS(ADevice:TDiskDevice; PCylinder,PHead,PSector:LongWord; var LCylinder,LHead,LSector:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ControllerNo:Integer read FControllerNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Description:String read GetDescription;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Erase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Reset(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Information(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function VendorId(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceId(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Manufacturer(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Product(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SerialNumber(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function HostBus(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function BusNumber(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceNumber(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FunctionNumber(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function BaseAddress(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InterfaceType(ADevice:TDiskDevice):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Slave(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FireWireGUID(ADevice:TDiskDevice):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WorldWideNo(ADevice:TDiskDevice):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PhysicalPort(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ControlPort(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function IRQ(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PIO(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DMA(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LBA(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Version(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaType(ADevice:TDiskDevice):TMediaType; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ready(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Locked(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Lockable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ejectable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Readable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Writeable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Eraseable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Removable(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ChangeLine(ADevice:TDiskDevice):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SectorSize(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SectorCount(ADevice:TDiskDevice):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SectorShiftCount(ADevice:TDiskDevice):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FController:TDiskController;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FImage:TDiskImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FStorage:PStorageDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FVendorId:Word;</code> | ||
+ | | PCI or USB Vendor Id | ||
+ | |- | ||
+ | | <code>FDeviceId:Word;</code> | ||
+ | | PCI or USB Device Id | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FManufacturer:String;</code> | ||
+ | | Device Manufacturer name | ||
+ | |- | ||
+ | | <code>FProduct:String;</code> | ||
+ | | Device Product name | ||
+ | |- | ||
+ | | <code>FSerialNumber:String;</code> | ||
+ | | Device Serial Number | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FPhysicalPort:Word;</code> | ||
+ | | Physical IO Port | ||
+ | |- | ||
+ | | <code>FControlPort:Word;</code> | ||
+ | | Drive Control Port | ||
+ | |- | ||
+ | | <code>FIRQ:LongWord;</code> | ||
+ | | IRQ No | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FSectorSize:Word;</code> | ||
+ | | Bytes Per Sector | ||
+ | |- | ||
+ | | <code>FSectorCount:Int64;</code> | ||
+ | | Total Sectors | ||
+ | |- | ||
+ | | <code>FSectorShiftCount:Word;</code> | ||
+ | | Sectors to Bytes Shift Count | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetIdentifier:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetInformation:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetManufacturer:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetProduct:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSerialNumber:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetHostBus:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetInterfaceType:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFreeSectors:Int64;</code> | ||
+ | | Unused Sectors on Device | ||
+ | |- | ||
+ | | <code>function GetAvailableSectors:Int64;</code> | ||
+ | | Largest block of Unused Sectors | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetAvailableBlock(var AStart,ACount:Int64):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDiskSignature:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetDiskSignature(ADiskSignature:LongWord); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Controller:TDiskController read FController;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Image:TDiskImage read FImage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Storage:PStorageDevice read FStorage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DeviceNo:Integer read FDeviceNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Identifier:String read GetIdentifier;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Information:String read GetInformation;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property VendorId:Word read FVendorId;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DeviceId:Word read FDeviceId;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Manufacturer:String read GetManufacturer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Product:String read GetProduct;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SerialNumber:String read GetSerialNumber;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property HostBus:String read GetHostBus;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property BusNumber:Word read FBusNumber;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DeviceNumber:Word read FDeviceNumber;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FunctionNumber:Word read FFunctionNumber;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property BaseAddress:Word read FBaseAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property InterfaceType:String read GetInterfaceType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Slave:Boolean read FSlave;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LogicalUnitNo:LongWord read FLogicalUnitNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FireWireGUID:Int64 read FFireWireGUID;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WorldWideNo:Int64 read FWorldWideNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PhysicalPort:Word read FPhysicalPort;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ControlPort:Word read FControlPort;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property IRQ:LongWord read FIRQ;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PIO:Boolean read FPIO;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DMA:Boolean read FDMA;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LBA:Boolean read FLBA;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Version:LongWord read FVersion;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property MediaType:TMediaType read FMediaType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FloppyType:TFloppyType read FFloppyType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Ready:Boolean read FReady;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Locked:Boolean read FLocked;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Lockable:Boolean read FLockable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Ejectable:Boolean read FEjectable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Readable:Boolean read FReadable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Writeable:Boolean read FWriteable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Eraseable:Boolean read FEraseable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Removable:Boolean read FRemovable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ChangeLine:Boolean read FChangeLine;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PhysicalCylinders:LongWord read FPhysicalCylinders;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PhysicalHeads:LongWord read FPhysicalHeads;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PhysicalSectors:LongWord read FPhysicalSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property LogicalCylinders:LongWord read FLogicalCylinders;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LogicalHeads:LongWord read FLogicalHeads;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LogicalSectors:LongWord read FLogicalSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read FSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:Int64 read FSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorShiftCount:Word read FSectorShiftCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PageCount:Word read FPageCount write FPageCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageShift:Word read FPageShift write FPageShift;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageMask:LongWord read FPageMask write FPageMask;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FreeSectors:Int64 read GetFreeSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AvailableSectors:Int64 read GetAvailableSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DiskSignature:LongWord read GetDiskSignature write SetDiskSignature;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DeviceInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocatePartitions:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LocateVolumes:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateVolume:TDiskVolume; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreatePartition(AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeletePartition(APartition:TDiskPartition):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Reset:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function InsertDevice:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectDevice:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenDevice(AMode:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure CloseDevice(AHandle:Integer); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadDevice(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteDevice(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EraseDevice(AHandle:Integer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekDevice(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPartition:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FPartitionNo:Integer;</code> | ||
+ | | \Partition1, \Partition2 etc - See Notes | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FEntryNo:Integer;</code> | ||
+ | | 0,1,2,3 | ||
+ | |- | ||
+ | | <code>FPartitionId:Byte;</code> | ||
+ | | Partition Type from Table | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FStartSector:Int64;</code> | ||
+ | | Absolute Start Sector on Device | ||
+ | |- | ||
+ | | <code>FSectorCount:LongWord;</code> | ||
+ | | Total Sectors in Partition | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPath:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetParent:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLogical:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPrimary:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetExtended(AExtended:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFreeSectors:LongWord;</code> | ||
+ | | Unused Sectors in Partition | ||
+ | |- | ||
+ | | <code>function GetAvailableSectors:LongWord;</code> | ||
+ | | Largest block of Unused Sectors | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetAvailableBlock(var AStart,ACount:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRoot:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetParentStart:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPartitionRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetPartitionRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Path:String read GetPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Parent:String read GetParent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Device:TDiskDevice read FDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Partition:TDiskPartition read FPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PartitionNo:Integer read FPartitionNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property EntryNo:Integer read FEntryNo write FEntryNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PartitionId:Byte read FPartitionId;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property BeginHead:Word read FBeginHead;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property BeginSector:Word read FBeginSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property BeginCylinder:Word read FBeginCylinder;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property EndHead:Word read FEndHead;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property EndSector:Word read FEndSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property EndCylinder:Word read FEndCylinder;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorOffset:LongWord read FSectorOffset;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Active:Boolean read FActive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Logical:Boolean read GetLogical;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Primary:Boolean read GetPrimary;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Extended:Boolean read FExtended write SetExtended;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognizable:Boolean read FRecognizable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognized:Boolean read FRecognized write FRecognized;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property NonVolume:Boolean read FNonVolume write FNonVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MultiVolume:Boolean read FMultiVolume write FMultiVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property StartSector:Int64 read FStartSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:LongWord read FSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FreeSectors:LongWord read GetFreeSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AvailableSectors:LongWord read GetAvailableSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Root:TDiskPartition read GetRoot;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ParentStart:LongWord read GetParentStart;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PartitionInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocatePartitions:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LocateVolumes:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateVolume:TDiskVolume; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenPartition(AMode:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure ClosePartition(AHandle:Integer); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadPartition(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WritePartition(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekPartition(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPartition:TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FVolumeNo:Integer;</code> | ||
+ | | \Volume1 , \Volume2, etc - See Notes | ||
+ | |- | ||
+ | | <code>FSegmentNo:Integer;</code> | ||
+ | | Segment0, Segment1 etc - for Multiple Segment volumes (eg Netware) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDriveType:TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFileSystem:TFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetParent:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetMaxFile:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxPath:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSystemName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeGUID:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeSerial:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileSysType:TFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetFileSystem(AFileSystem:TFileSystem);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSectorSize:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetStartSector:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorShiftCount:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaTypeToDriveType(AMediaType:TMediaType):TDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetBootRecord(ARecord:Pointer,ASector:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Parent:String read GetParent;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Device:TDiskDevice read FDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Partition:TDiskPartition read FPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeNo:Integer read FVolumeNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SegmentNo:Integer read FSegmentNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property MaxFile:Integer read GetMaxFile;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxPath:Integer read GetMaxPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read GetAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SystemName:String read GetSystemName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeName:String read GetVolumeName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeGUID:String read GetVolumeGUID;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeSerial:LongWord read GetVolumeSerial;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DriveType:TDriveType read FDriveType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FileSysType:TFileSysType read GetFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FileSystem:TFileSystem read FFileSystem write SetFileSystem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Removable:Boolean read FRemovable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognizable:Boolean read FRecognizable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Recognized:Boolean read FRecognized write FRecognized;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read GetSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property StartSector:Int64 read GetStartSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:LongWord read GetSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorShiftCount:Word read GetSectorShiftCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function VolumeInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateDrive(ADriveNo:Integer):TDiskDrive; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteDrive(ADrive:TDiskDrive):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MountVolume(ADriveNo:Integer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountVolume:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FormatVolume(AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DefragmentVolume:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ConvertVolume(AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RepairVolume:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyVolume(ADest:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkVolume(const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandVolume(const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenVolume(AMode:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure CloseVolume(AHandle:Integer); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadVolume(AHandle:Integer; var ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteVolume(AHandle:Integer; const ABuffer; ACount:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekVolume(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FController:TDiskController;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FImageNo:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLocked:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FChanged:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FImageType:TImageType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMediaType:TMediaType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFloppyType:TFloppyType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FSectorSize:Word;</code> | ||
+ | | Bytes Per Sector | ||
+ | |- | ||
+ | | <code>FSectorCount:Int64;</code> | ||
+ | | Total Sectors | ||
+ | |- | ||
+ | | <code>FSectorShiftCount:Word;</code> | ||
+ | | Sectors to Bytes Shift Count | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FPartitionId:Byte;</code> | ||
+ | | Partition Type for Table | ||
+ | |- | ||
+ | | <code>FFileSysType:TFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetReady:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetReadable:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetWriteable:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEraseable:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCylinders:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetHeads:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectors:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLogicalShiftCount:Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSectorSize:Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorCount:Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorShiftCount:Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPartitionId:Byte; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetName(const AName:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetDevice(ADevice:TDiskDevice);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Controller:TDiskController read FController;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Name:String read GetName write SetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ImageNo:Integer read FImageNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Ready:Boolean read GetReady;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Locked:Boolean read FLocked;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Changed:Boolean read FChanged;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Readable:Boolean read GetReadable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Writeable:Boolean read GetWriteable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Eraseable:Boolean read GetEraseable;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read FAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ImageType:TImageType read FImageType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MediaType:TMediaType read FMediaType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FloppyType:TFloppyType read FFloppyType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Cylinders:LongWord read FCylinders;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Heads:LongWord read FHeads;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Sectors:LongWord read FSectors;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LogicalShiftCount:Word read FLogicalShiftCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read FSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:Int64 read FSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorShiftCount:Word read FSectorShiftCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PartitionId:Byte read FPartitionId;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FileSysType:TFileSysType read FFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Device:TDiskDevice read FDevice write SetDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterOwner:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ImageInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Allocated(ASector:LongWord; ACount:Word):Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MountImage:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountImage:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertImage:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectImage:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ConvertImage(AImageType:TImageType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyImage(ADest:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ShrinkImage(const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandImage(const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseImage:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateSnapshot:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSnapshot:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MergeSnapshot:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FAllowDrive:Boolean;</code> | ||
+ | | Enable mounting with an attached Drive | ||
+ | |- | ||
+ | | <code>FAllowDefault:Boolean;</code> | ||
+ | | Enable mounting of unrecognized media (Unpartitioned Media Only) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FPartitioner:TDiskPartitioner;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFormatter:TDiskFormatter;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDefragger:TDiskDefragger;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FConverter:TDiskConverter;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRepairer:TDiskRepairer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FResizer:TDiskResizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCopier:TDiskCopier;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FImager:TDiskImager;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property AllowDrive:Boolean read FAllowDrive write FAllowDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AllowDefault:Boolean read FAllowDefault write FAllowDefault;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DirtyCheck:Boolean read FDirtyCheck write FDirtyCheck;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property QuickCheck:Boolean read FQuickCheck write FQuickCheck;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Partitioner:TDiskPartitioner read FPartitioner write FPartitioner;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Formatter:TDiskFormatter read FFormatter write FFormatter;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Defragger:TDiskDefragger read FDefragger write FDefragger;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Converter:TDiskConverter read FConverter write FConverter;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Repairer:TDiskRepairer read FRepairer write FRepairer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Resizer:TDiskResizer read FResizer write FResizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Copier:TDiskCopier read FCopier write FCopier;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Imager:TDiskImager read FImager write FImager;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RecognizePartitionId(APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RecognizeBootSector(ABootSector:PBootSector; const AStartSector,ASectorCount:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RecognizePartition(APartition:TDiskPartition):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RecognizeVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MountVolume(AVolume:TDiskVolume; ADrive:TDiskDrive):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RecognizeImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MountImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDrives:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RedirectPath(const APath:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RedirectDrive(ADrive:TDiskDrive):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AttachPath(const APath:String; ADrive:TDiskDrive):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DetachDrive(ADrive:TDiskDrive):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FInitChar:Byte;</code> | ||
+ | | Character to initialize sectors when adding partitions | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckLogical(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckExtended(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetLogicalChild(ADevice:TDiskDevice; APartition:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetExtendedSibling(ADevice:TDiskDevice; AParent:TDiskPartition; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetExtendedParent(ADevice:TDiskDevice; AParent:TDiskPartition; AStart:LongWord; ALock:Boolean; AState:LongWord):TDiskPartition;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetEndCHS(ADevice:TDiskDevice; AStart,ACount:LongWord; var ACylinder,AHead,ASector:Word):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetStartCHS(ADevice:TDiskDevice; AStart,ACount:LongWord; var ACylinder,AHead,ASector:Word):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSectorCount(ADevice:TDiskDevice; AStart,ACount:LongWord):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetStartSector(ADevice:TDiskDevice; AExtended,ALogical:Boolean; AStart:LongWord; var ACount:LongWord):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorOffset(ADevice:TDiskDevice; AParent:TDiskPartition; AExtended:Boolean; AStart:LongWord):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPartitionId(ADevice:TDiskDevice; AParent:TDiskPartition; AStart,ACount:LongWord; APartitionId:Byte):Byte; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function InitPartition(ADevice:TDiskDevice; AParent:TDiskPartition; AStart,ACount:LongWord; APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreatePartitionRecord(ADevice:TDiskDevice; ARecord:PPartitionRecord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreatePartitionEntry(ADevice:TDiskDevice; AStart,ACount,AOffset:LongWord; APartitionId:Byte; AActive:Boolean; var AEntry:TPartitionEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FillSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; AValue:Byte):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteSectors(ADevice:TDiskDevice; APartition:TDiskPartition; ASector,ACount:LongWord; const ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property InitChar:Byte read FInitChar write FInitChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptPartition(ADevice:TDiskDevice; APartition,AParent:TDiskPartition; APartitionId:Byte):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreatePartition(ADevice:TDiskDevice; AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeletePartition(APartition:TDiskPartition):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte; AOverride:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FillSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; AValue:Byte):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReadSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteSectors(AVolume:TDiskVolume; ADrive:TDiskDrive; ASector,ACount:LongWord; const ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume:TDiskVolume; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FormatVolume(AVolume:TDiskVolume; AFloppyType:TFloppyType; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DefragmentVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume:TDiskVolume; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ConvertVolume(AVolume:TDiskVolume; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptImage(AImage:TDiskImage; AImageType:TImageType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ConvertImage(AImage:TDiskImage; AImageType:TImageType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RepairVolume(AVolume:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ShrinkVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandVolume(AVolume:TDiskVolume; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ShrinkImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ExpandImage(AImage:TDiskImage; const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptVolume(AVolume,ADest:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CopyVolume(AVolume,ADest:TDiskVolume):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptImage(AImage,ADest:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CopyImage(AImage,ADest:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRecognizer:TRecognizer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseImage(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcceptSnapshot(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateSnapshot(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSnapshot(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MergeSnapshot(AImage:TDiskImage):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolume:TDiskVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDrive:TDiskDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRootPath:String;</code> | ||
+ | | Root Path must be prefixed with \\. | ||
+ | |- | ||
+ | | <code>FMaxFile:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMaxPath:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMaxAltFile:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMaxAltPath:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMaxAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMaskAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMountPointTag:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSymbolicLinkTag:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSystemName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolumeName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolumeGUID:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FVolumeSerial:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFileSysType:TFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSectorSize:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FStartSector:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSectorCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FRoot:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FCurrentIndex:LongWord;</code> | ||
+ | | TLS Index for storing current directory | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FChunks:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FTables:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FBlocks:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FEntries:TFileSysTree;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCatalogs:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAcls:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FBootSector:LongWord;</code> | ||
+ | | Relative to StartSector | ||
+ | |- | ||
+ | | <code>FBootBackup:LongWord;</code> | ||
+ | | Relative to StartSector | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSectorBuffer:Pointer;</code> | ||
+ | | Buffer of exactly sector size | ||
+ | |- | ||
+ | | <code>FSectorLock:TMutexHandle;</code> | ||
+ | | Lock for sector buffer | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SectorLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SectorUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetDrive(ADrive:TDiskDrive); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetVolume(AVolume:TDiskVolume); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPathChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetNameChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRootChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRootName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRootPath:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSystemName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetVolumeGUID:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LoadPathChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadNameChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadFileChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadRootChar:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadRootName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadRootPath:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadMaxFile:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadMaxPath:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadMaxAltFile:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadMaxAltPath:Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadSymbolicLinkTag:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadSystemName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadVolumeName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadVolumeGUID:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadVolumeSerial:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadFileSysType:TFileSysType; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LoadSectorSize:Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadStartSector:Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadSectorCount:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCurrent:TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrent(ACurrent:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FillSectors(ASector,ACount:LongWord; AValue:Byte):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReadSectors(ASector,ACount:LongWord; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteSectors(ASector,ACount:LongWord; const ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LoadTables:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadBlocks:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadEntries(AParent:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadCatalogs:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LoadTable(ATableNo:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LoadBlock(ABlockNo:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |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"| | ||
+ | |- | ||
+ | | <code>function UnloadEntries(AParent:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddCatalog(AEntry:TDiskEntry; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveCatalog(ACatalog:TDiskCatalog):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CheckCatalog(ACatalog:TDiskCatalog; ALock:Boolean; AState:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetCatalogByNo(ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalogByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalogByNext(APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextCatalogNo:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMaxCatalogNo:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddHardlink(AEntry,AParent:TDiskEntry; const AName:String; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveHardlink(AParent,AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddMountPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveMountPoint(AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddJunctionPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveJunctionPoint(AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddSymbolicLink(AParent:TDiskEntry; const AName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddSymbolicLinkEx(AParent:TDiskEntry; const AName,AAltName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveSymbolicLink(AParent,AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SetTable(ATable:TDiskTable):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetBlock(ABlock:TDiskBlock):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCatalog(ACatalog:TDiskCatalog):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetReparse(AParent,AEntry:TDiskEntry; AReparse:TDiskReparse):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetSecurity(AParent,AEntry:TDiskEntry; ASecurity:TDiskSecurity):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetTable(ATableNo:LongWord):TDiskTable; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTableEx(ATableNo:LongWord; AWrite:Boolean):TDiskTable; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBlock(ABlockNo:LongWord):TDiskBlock; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEntryEx(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalog(ACatalogNo:LongWord):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCatalogEx(ACatalogNo:LongWord; AWrite:Boolean):TDiskCatalog; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetReparse(AEntry:TDiskEntry):TDiskReparse; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSecurity(AEntry:TDiskEntry):TDiskSecurity; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MatchEntry(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MatchEntryEx(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny,AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetEntryPath(AEntry:TDiskEntry; AAltName:Boolean):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEntryName(AEntry:TDiskEntry; AAltName:Boolean):String;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SplitPath(const APath:String; var ARelative:Boolean; AFolders:TStrings; var AName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SplitName(const AName:String; var AFile,AStream:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SplitFile(const AFile:String; var AName,AExt:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SplitStream(const AStream:String; var AName,AType:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function BuildPath(ARelative:Boolean; AFolders:TLinkedStringList; const AName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function BuildName(const AFile,AStream:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function BuildFile(const AName,AExt:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function BuildStream(const AName,AType:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckName(const AName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckAltName(const AAltName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareAltName(const AAltName,AMatch:String; AWildcard:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckLinkName(const AName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSecurityFromDescriptor(ADescriptor:Pointer):TDiskSecurity; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDescriptorFromSecurity(ASecurity:TDiskSecurity; ADescriptor:Pointer; var ASize:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Volume:TDiskVolume read FVolume write SetVolume;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Drive:TDiskDrive read FDrive write SetDrive;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PathChar:String read GetPathChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property NameChar:String read GetNameChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FileChar:String read GetFileChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property RootChar:String read GetRootChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property RootName:String read GetRootName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property RootPath:String read GetRootPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxFile:Integer read FMaxFile;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxPath:Integer read FMaxPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxAltFile:Integer read FMaxAltFile;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxAltPath:Integer read FMaxAltPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read FAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaxAttributes:LongWord read FMaxAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MaskAttributes:LongWord read FMaskAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MountPointTag:LongWord read FMountPointTag;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SymbolicLinkTag:LongWord read FSymbolicLinkTag;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SystemName:String read GetSystemName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeName:String read GetVolumeName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeGUID:String read GetVolumeGUID;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property VolumeSerial:LongWord read FVolumeSerial;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FileSysType:TFileSysType read FFileSysType;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read FSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property StartSector:Int64 read FStartSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:LongWord read FSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property MarkDirty:Boolean read FMarkDirty write FMarkDirty;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MarkClean:Boolean read FMarkClean write FMarkClean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MarkError:Boolean read FMarkError;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property LogDirty:Boolean read FLogDirty;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MountDirty:Boolean read FMountDirty;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterConvert:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileSystemInit:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MountFileSystem:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DismountFileSystem:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateCatalog(const AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteCatalog(ACatalogNo:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindCatalogClose(var ASearchRec:TCatalogSearchRec); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDriveLabel:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetDriveLabel(const ALabel:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveSerial:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetDriveSerial(ASerial:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDriveFreeSpace:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveFreeSpaceEx:Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveTotalSpace:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetDriveTotalSpaceEx:Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileOpen(const FileName:String; Mode:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileCreate(const FileName:String):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteFile(const FileName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FileClose(Handle:Integer); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RenameFile(const OldName,NewName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSeek(Handle,Offset,Origin:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSeekEx(Handle:Integer; const Offset:Int64; Origin:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileFlush(Handle:Integer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileTruncate(Handle:Integer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FilePos(Handle:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FilePosEx(Handle:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileGetAttr(const FileName:String):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileGetDate(Handle:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileGetSize(Handle:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileGetSizeEx(Handle:Integer):Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetAttr(const FileName:String; Attr:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetDate(Handle:Integer; Age:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetSize(Handle:Integer; Size:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetSizeEx(Handle:Integer; const Size:Int64):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileRead(Handle:Integer; var Buffer; Count:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileWrite(Handle:Integer; const Buffer; Count:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateDir(const DirName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveDir(const DirName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetCurrentDir:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetCurrentDir(const DirName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindOne(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindAll(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstEx(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextEx(var SearchRec:TFileSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindCloseEx(var SearchRec:TFileSearchRec); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstStream(const FileName:String; var SearchRec:TStreamSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextStream(var SearchRec:TStreamSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindStreamClose(var SearchRec:TStreamSearchRec); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstFileName(const FileName:String; var SearchRec:TLinkSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextFileName(var SearchRec:TLinkSearchRec):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FindFileNameClose(var SearchRec:TLinkSearchRec); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateHardLink(const LinkName,FileName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteHardLink(const LinkName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateMountPoint(const PathName,VolumeName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteMountPoint(const PathName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateJunctionPoint(const PathName,FolderName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteJunctionPoint(const PathName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CreateSymbolicLink(const LinkName,TargetName:String; Directory:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateSymbolicLinkEx(const LinkName,ShortName,TargetName:String; Directory:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteSymbolicLink(const LinkName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetMountPointTarget(const PathName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetJunctionPointTarget(const PathName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSymbolicLinkTarget(const LinkName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SetFileShortName(const FileName,ShortName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileShortNameEx(Handle:Integer; const ShortName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFileSecurity(const FileName:String; Descriptor:Pointer; var Size:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileSecurity(const FileName:String; Descriptor:Pointer):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetPathName(const FileName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetShortName(const FileName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetLongName(const FileName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetTrueName(const FileName:String):String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileCreateEx(const FileName,ShortName:String):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CreateDirEx(const DirName,ShortName:String):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileGetAttrEx(Handle:Integer):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FileGetDateEx(Handle:Integer):TFileTime; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FileSetDateEx(Handle:Integer; Age:TFileTime):Integer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFileTime(Handle:Integer; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetFileTime(Handle:Integer; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FTableNo:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property TableNo:LongWord read FTableNo write FTableNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FBlockNo:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property BlockNo:LongWord read FBlockNo write FBlockNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FHash:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAltName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAltHash:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSize:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAttributes:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteTime:TFileTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCreateTime:TFileTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAccessTime:TFileTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FReparseTag:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FEntriesLoaded:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FReferenceCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FRecent:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetName(const AName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAltName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetAltName(const AAltName:String);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName write SetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Hash:LongWord read FHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AltName:String read GetAltName write SetAltName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AltHash:LongWord read FAltHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Size:Int64 read FSize write FSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read FAttributes write FAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteTime:TFileTime read FWriteTime write FWriteTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CreateTime:TFileTime read FCreateTime write FCreateTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property AccessTime:TFileTime read FAccessTime write FAccessTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ReparseTag:LongWord read FReparseTag write FReparseTag;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property EntriesLoaded:Boolean read FEntriesLoaded write FEntriesLoaded;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ReferenceCount:LongWord read FReferenceCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Recent:TDiskEntry read FRecent write FRecent;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddReference:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveReference:Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindFirstName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindPrevName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindNextName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FindLastName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLock:TSynchronizerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FName:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FHash:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPath:String;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCatalogNo:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FMediaType:TMediaType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFloppyType:TFloppyType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAttributes:LongWord;</code> | ||
+ | | Initial/Default, Bootable, No Emulation, 1.2M, 1.44M, 2.88M, Hard Disk | ||
+ | |- | ||
+ | | <code>FSectorSize:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSectorCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetName:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetName(const AName:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetPath:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetPath(const APath:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetMediaType:TMediaType; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetMediaType(AMediaType:TMediaType); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetFloppyType:TFloppyType; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetFloppyType(AFloppyType:TFloppyType); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAttributes:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetAttributes(AAttributes:LongWord); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorSize:Word; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSectorSize(ASectorSize:Word); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetSectorCount:Int64; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSectorCount(const ASectorCount:Int64); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Name:String read GetName write SetName;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Hash:LongWord read FHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Path:String read GetPath write SetPath;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CatalogNo:LongWord read FCatalogNo write FCatalogNo;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property MediaType:TMediaType read GetMediaType write SetMediaType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FloppyType:TFloppyType read GetFloppyType write SetFloppyType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Attributes:LongWord read GetAttributes write SetAttributes;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorSize:Word read GetSectorSize write SetSectorSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SectorCount:Int64 read GetSectorCount write SetSectorCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReaderLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReaderUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function WriterUnlock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetTarget:String; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetTarget(const ATarget:String); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Target:String read GetTarget write SetTarget;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>constructor CreateFromSecurity(ALocalLock:TMutexHandle; ASecurity:TDiskSecurity); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>constructor CreateFromDescriptor(ALocalLock:TMutexHandle; ADescriptor:Pointer); virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FAcls:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAclLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function SecuritySize:LongWord; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SecurityDescriptor:Pointer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SecurityDescriptorEx(ALocal:Boolean):Pointer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InheritedDescriptor:Pointer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MergedDescriptor(AChild:Pointer):Pointer; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseDescriptor(ADescriptor:Pointer; AInherited,AMerged:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CopyToSecurity(ASecurity:TDiskSecurity):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyFromSecurity(ASecurity:TDiskSecurity):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CopyToDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyToDescriptorEx(ADescriptor:Pointer; ASize:LongWord; ALocal:Boolean):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CopyFromDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FAces:TFileSysList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAceLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FLocalLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ADriver:TFileSysDriver);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TCriticalSectionHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FBuffer:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheMode:TCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheState:TCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheTimeout:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FReadCached:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FReadDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FWriteBack:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteThrough:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FHitCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMissCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFailCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSuccessCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFlushCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDiscardCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FUnknownCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FTimer:TCacheTimer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FThread:TCacheThread;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemovePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddUnknown(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function UpdateClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UpdateDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RoundPageSize(APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property PageSize:LongWord read FPageSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageCount:LongWord read FPageCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheSize:LongWord read FCacheSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheMode:TCacheMode read FCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheState:TCacheState read FCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheTimeout:LongWord read FCacheTimeout;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ReadCached:Int64 read FReadCached;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ReadDirect:Int64 read FReadDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property WriteBack:Int64 read FWriteBack;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteThrough:Int64 read FWriteThrough;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteDirect:Int64 read FWriteDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property HitCount:Int64 read FHitCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MissCount:Int64 read FMissCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FailCount:Int64 read FFailCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SuccessCount:Int64 read FSuccessCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FlushCount:Int64 read FFlushCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DiscardCount:Int64 read FDiscardCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property UnknownCount:Int64 read FUnknownCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenCache(ACacheSize,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseCache:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEmptyPage:TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DiscardPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FlushPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushPageEx(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ADriver:TFileSysDriver);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |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> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ADriver:TFileSysDriver);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TCriticalSectionHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FBuffer:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheKeys:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheMode:TCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheState:TCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFlushTimeout:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDiscardTimeout:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FReadCached:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FReadDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FWriteBack:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteThrough:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FHitCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMissCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFailCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSuccessCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFlushCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDiscardCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FUnknownCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FTimer:THashCacheTimer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FThread:THashCacheThread;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemovePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddUnknown(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function UpdateClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UpdateDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RoundPageSize(APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AdjustCacheKeys(ACacheKeys:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CalculatePageCount(ADevice:TDiskDevice):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CalculatePageShift(ADevice:TDiskDevice):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CalculatePageMask(ADevice:TDiskDevice):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function KeyLink(APage:THashCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(APage:THashCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyFirst(AKeyHash:LongWord):THashCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property PageSize:LongWord read FPageSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageCount:LongWord read FPageCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheSize:LongWord read FCacheSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheKeys:LongWord read FCacheKeys;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheMode:TCacheMode read FCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheState:TCacheState read FCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FlushTimeout:LongWord read FFlushTimeout;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DiscardTimeout:LongWord read FDiscardTimeout;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ReadCached:Int64 read FReadCached;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ReadDirect:Int64 read FReadDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property WriteBack:Int64 read FWriteBack;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteThrough:Int64 read FWriteThrough;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteDirect:Int64 read FWriteDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property HitCount:Int64 read FHitCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MissCount:Int64 read FMissCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FailCount:Int64 read FFailCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SuccessCount:Int64 read FSuccessCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FlushCount:Int64 read FFlushCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DiscardCount:Int64 read FDiscardCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property UnknownCount:Int64 read FUnknownCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseCache:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceWrite(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEmptyPage:TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DiscardPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FlushPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushPageEx(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | | <code>constructor Create(ADriver:TFileSysDriver);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TCriticalSectionHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FKeyBits:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyMask:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyBuckets:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FBuffer:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageCount:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheSize:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheKeys:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheMode:TCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCacheState:TCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FFlushTimeout:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDiscardTimeout:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FReadCached:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FReadDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FWriteBack:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteThrough:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FWriteDirect:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FHitCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FMissCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFailCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FSuccessCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFlushCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDiscardCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FUnknownCount:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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"| | ||
+ | |- | ||
+ | | <code>FTimer:TIncrementalCacheTimer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FThread:TIncrementalCacheThread;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemovePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddUnknown(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function UpdateClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UpdateDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RoundPageSize(APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AdjustCacheKeys(ACacheKeys:LongWord):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CalculatePageCount(ADevice:TDiskDevice):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CalculatePageShift(ADevice:TDiskDevice):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CalculatePageMask(ADevice:TDiskDevice):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function KeyLink(APage:THashCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyUnlink(APage:THashCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function KeyFirst(AKeyHash:LongWord):THashCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkEmpty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkClean(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlinkDirty(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PrepareDeviceRead(ADevice:TDiskDevice; APage:TCachePage; var ASector:LongWord; var ACount:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PrepareDeviceWrite(ADevice:TDiskDevice; APage:TCachePage; var ASector:LongWord; var ACount:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property PageSize:LongWord read FPageSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageCount:LongWord read FPageCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheSize:LongWord read FCacheSize;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheKeys:LongWord read FCacheKeys;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheMode:TCacheMode read FCacheMode;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property CacheState:TCacheState read FCacheState;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property FlushTimeout:LongWord read FFlushTimeout;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DiscardTimeout:LongWord read FDiscardTimeout;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property ReadCached:Int64 read FReadCached;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ReadDirect:Int64 read FReadDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property WriteBack:Int64 read FWriteBack;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteThrough:Int64 read FWriteThrough;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteDirect:Int64 read FWriteDirect;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property HitCount:Int64 read FHitCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property MissCount:Int64 read FMissCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FailCount:Int64 read FFailCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property SuccessCount:Int64 read FSuccessCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property FlushCount:Int64 read FFlushCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DiscardCount:Int64 read FDiscardCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property UnknownCount:Int64 read FUnknownCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function OpenCache(ACacheSize,ACacheKeys,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CloseCache:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceWrite(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetEmptyPage:TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function DiscardPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DiscardCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FlushPage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushPageEx(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FlushCache(AFirst,AAll:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FDevice:TDiskDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FData:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FSector:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCount:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FPageState:TCachePageState;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FPrevPage:TCachePage;</code> | ||
+ | | Previous page in Page list | ||
+ | |- | ||
+ | | <code>FNextPage:TCachePage;</code> | ||
+ | | Next page in Page list | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <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> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Data:Pointer read FData write FData;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property Sector:LongWord read FSector write FSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Count:Word read FCount write FCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PageTime:Int64 read FPageTime write FPageTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property WriteTime:Int64 read FWriteTime write FWriteTime;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageType:TCachePageType read FPageType write FPageType;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property PageState:TCachePageState read FPageState write FPageState;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PrevPage:TCachePage read FPrevPage write FPrevPage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property NextPage:TCachePage read FNextPage write FNextPage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property PrevLink:TCachePage read FPrevLink write FPrevLink;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property NextLink:TCachePage read FNextLink write FNextLink;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>FKeyPrev:THashCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FKeyNext:THashCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property KeyHash:LongWord read FKeyHash write FKeyHash;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyPrev:THashCachePage read FKeyPrev write FKeyPrev;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property KeyNext:THashCachePage read FKeyNext write FKeyNext;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>FReadCount:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDirtySector:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FDirtyCount:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property ReadSector:LongWord read FReadSector write FReadSector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property ReadCount:Word read FReadCount write FReadCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DirtySector:LongWord read FDirtySector write FDirtySector;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property DirtyCount:Word read FDirtyCount write FDirtyCount;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ReadData:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DirtyData:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:TCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FInterval:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCheckTimer:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FProcessSemaphore:TSemaphoreHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFirst:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Dequeue(AMax:Integer):TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FirstKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteKey(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DecrementKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function StartTimer(AInterval:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function StopTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:THashCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FInterval:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCheckTimer:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FProcessSemaphore:TSemaphoreHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFirst:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Dequeue(AMax:Integer):TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FirstKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteKey(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DecrementKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function StartTimer(AInterval:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function StopTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:TIncrementalCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FInterval:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCheckTimer:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FProcessSemaphore:TSemaphoreHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFirst:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:PCacheTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Dequeue(AMax:Integer):TCachePage;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FirstKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertKey(APage:TCachePage; AKey:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteKey(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DecrementKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function StartTimer(AInterval:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function StopTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnschedulePage(APage:TCachePage):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:TCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Execute; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:THashCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Execute; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FCache:TIncrementalCache;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure Execute; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>FDriver:TFileSysDriver;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FInterval:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FCheckTimer:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FProcessTimer:TTimerHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFirst:PEntryTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:PEntryTimerItem;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AcquireLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ReleaseLock:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Dequeue:TDiskEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FirstKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function InsertKey(AEntry:TDiskEntry; AKey:Integer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeleteKey(AEntry:TDiskEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DecrementKey:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function StartTimer(AInterval:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function StopTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTimer:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function ScheduleEntry(AEntry:TDiskEntry; ATimeout:LongWord):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnscheduleEntry(AEntry:TDiskEntry):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>function GetName:String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function RecognizePartitionId(APartitionId:Byte):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function RecognizePartition(APartition:TDiskPartition):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function AcceptPartition(ADevice:TDiskDevice; APartition,AParent:TDiskPartition; APartitionId:Byte):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Reset(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Information(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function VendorId(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceId(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Manufacturer(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Product(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SerialNumber(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LBA(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaType(ADevice:TDiskDevice):TMediaType; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ready(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Locked(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Lockable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ejectable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Readable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Writeable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Removable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ChangeLine(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SectorSize(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SectorCount(ADevice:TDiskDevice):Int64; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function ControllerInit:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LocateDevices:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Erase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Reset(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LockMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function EjectMedia(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaReady(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaChanged(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function MediaLocked(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Information(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function VendorId(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function DeviceId(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function Manufacturer(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Product(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SerialNumber(ADevice:TDiskDevice):String; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LogicalUnitNo(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LBA(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function MediaType(ADevice:TDiskDevice):TMediaType; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ready(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Locked(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Lockable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Ejectable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Readable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Writeable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Eraseable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Removable(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ChangeLine(ADevice:TDiskDevice):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SectorSize(ADevice:TDiskDevice):Word; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SectorCount(ADevice:TDiskDevice):Int64; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FHandle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetSize(NewSize:LongInt); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Read(var Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(const Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Seek(Offset:LongInt; Origin:Word):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Handle:Integer read FHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FHandle:Integer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>procedure SetSize(NewSize:LongInt); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetSizeEx(const NewSize:Int64); override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function Read(var Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Write(const Buffer; Count:LongInt):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function Seek(Offset:LongInt; Origin:Word):LongInt; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SeekEx(const Offset:Int64; Origin:Word):Int64; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Handle:Integer read FHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 03:29, 14 March 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo FileSystem interface unit
Numbering of Devices, Partitions, Volumes, Drives etc
Example:
Machine with 2 Floppy drives, 2 Fixed drives
Fixed Drive 1 has 2 Partitions (1 Primary and 1 Extended)
Fixed Drive 2 has 1 Partition (1 Primary)
\Floppy0 = Device 00h / Partition 0
\Floppy1 = Device 01h / Partition 0
\Harddisk0\Partition1 = Device 80h / Partition 1
\Harddisk0\Extended1 = Device 80h / Extended 1
\Harddisk0\Partition2 = Device 80h / Partition 2
\Harddisk1\Partition1 = Device 81h / Partition 1
\Volume1 = \Floppy0
\Volume2 = \Floppy1
\Volume3 = \Harddisk0\Partition1
\Volume4 = \Harddisk1\Partition1
\Volume5 = \Harddisk0\Partition2
A: = \Volume1
B: = \Volume2
C: = \Volume3 (Alternate Name = \HarddiskVolume1)
D: = \Volume4 (Alternate Name = \HarddiskVolume2)
E: = \Volume5 (Alternate Name = \HarddiskVolume3)
Constants
FILESYS_*
FILESYS_LOCK_*
FILESYS_CACHE_*
FILESYS_ENTRY_*
CACHE_TIMER_*
ENTRY_TIMER_*
*_PARTITION, *_DEVICE, *_VOLUME
FIND_FLAG_*
FIND_WILDCARD_*
fm*Mask
fa*
va*
da*
ia*
ca*
NAME_HASH_SIZE*
pid*
FILESYS_*_DEVICE_DESCRIPTION
FILESYS_*_CONTROLLER_DESCRIPTION
FILESYS_LOG_*
Type definitions
Storage device event
Cache timer
Entry timer
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
Search
File search types
TFileSearchRec = record
Disk search
TDiskSearchRec = record
Partition search
TPartitionSearchRec = record
Volume search
TVolumeSearchRec = record
Drive search
TDriveSearchRec = record
Image search
TImageSearchRec = record
Catalog search
TCatalogSearchRec = record
Mount search
TMountSearchRec = record
Junction search
TJunctionSearchRec = record
Stream search
TStreamSearchRec = record
Link search
TLinkSearchRec = record
FAT12/FAT16 BIOS parameter block
TBiosPB = packed record
FAT32 BIOS parameter block
TExtBiosPB = packed record
NTFS BIOS parameter block
TNtfsBiosPB = packed record
Partition entry types
TPartitionEntry = packed record
Partition table
TPartitionTable = packed record
Master boot code
TMasterBootCode = packed array[0..445] of Byte;
|
Master boot record
Ext master boot code
TExtMasterBootCode = packed array[0..439] of Byte;
|
Ext master boot record
Partition record
Sector types
Boot sector jump
TBootSectorJump = packed array[0..2] of Byte;
|
Boot sector code
TBootSectorCode = packed array[0..447] of Byte;
|
Boot sector
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
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
EXTFS boot sector
FileSystem logging specific types
Class definitions
File system driver
TFileSysDriver = class(TObject)
File system list
TFileSysList = class(TLinkedObjList)
File system list extended
TFileSysListEx = class(TLinkedObjList)
File system tree
TFileSysTree = class(TLinkedObjTree)
Disk drive
TDiskDrive = class(TListObject)
Raw handle
TRawHandle = class(TListObject)
Enumerate handle
TEnumHandle = class(TListObject)
File handle
TFileHandle = class(TListObject)
Find handle
TFindHandle = class(TListObject)
Disk controller
TDiskController = class(TListObject)
Disk device
TDiskDevice = class(TListObject)
Disk partition
TDiskPartition = class(TListObject)
Disk volume
TDiskVolume = class(TListObject)
Disk image
TDiskImage = class(TListObject)
Recognizer
TRecognizer = class(TListObject)
Redirector
TRedirector = class(TListObject)
Disk partitioner
TDiskPartitioner = class(TObject)
Disk formatter
TDiskFormatter = class(TObject)
Disk defragger
TDiskDefragger = class(TObject)
Disk converter
TDiskConverter = class(TObject)
Disk repairer
TDiskRepairer = class(TObject)
Disk resizer
TDiskResizer = class(TObject)
Disk copier
TDiskCopier = class(TObject)
Disk imager
TDiskImager = class(TObject)
File system
TFileSystem = class(TListObject)
Disk chunk
TDiskChunk = class(TListObject)
Disk table
TDiskTable = class(TListObject)
Disk block
TDiskBlock = class(TListObject)
Disk entry
TDiskEntry = class(TTreeObject)
Disk catalog
TDiskCatalog = class(TListObject)
Disk reparse
TDiskReparse = class(TObject)
Disk security
TDiskSecurity = class(TObject)
Disk access control list
TDiskAcl = class(TListObject)
Disk access control entry
TDiskAce = class(TListObject)
Cache
TCache = class(TObject)
Cache extended
TCacheEx = class(TCache)
Hash cache
THashCache = class(TObject)
Incremental cache
TIncrementalCache = class(TObject)
Cache page
TCachePage = class(TObject)
Hash cache page
THashCachePage = class(TCachePage)
Incremental cache page
TIncrementalCachePage = class(THashCachePage)
Cache timer
TCacheTimer = class(TObject)
Hash cache timer
THashCacheTimer = class(TObject)
Incremental cache timer
TIncrementalCacheTimer = class(TObject)
Cache thread
TCacheThread = class(TThread)
Hash cache thread
THashCacheThread = class(TThread)
Incremental cache thread
TIncrementalCacheThread = class(TThread)
Entry timer
TEntryTimer = class(TObject)
Default recognizer
TDefaultRecognizer = class(TRecognizer)
Default partitioner
TDefaultPartitioner = class(TDiskPartitioner)
ATA disk controller
TATADiskController = class(TDiskController)
ATAPI disk controller
TATAPIDiskController = class(TDiskController)
SCSI disk contoller
TSCSIDiskController = class(TDiskController)
USB disk controller
TUSBDiskController = class(TDiskController)
MMC disk controller
TMMCDiskController = class(TDiskController)
File system handle stream
TFSHandleStream = class(TStream)
File system file stream
TFSFileStream = class(TFSHandleStream)
File system handle stream extended
TFSHandleStreamEx = class(TStreamEx)
File system file stream extended
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
FileSystem functions (Delphi / FreePascal RTL Equivalent)
Drive functions
function FSSetDriveLabel(ADrive:Byte; const ALabel:String):Boolean; inline;
function FSSetDriveSerial(ADrive:Byte; ASerial:LongWord):Boolean; inline;
function FSSetCurrentDrive(const ADrive:String):Boolean; inline;
File functions
function FSFileOpen(const AFileName:String; AMode:Integer):Integer; inline;
function FSFileCreate(const AFileName:String):Integer; inline;
function FSDeleteFile(const AFileName:String):Boolean; inline;
function FSRenameFile(const AOldName,ANewName:String):Boolean; inline;
function FSFileSeek(AHandle,AOffset,AOrigin:Integer):Integer; inline;
function FSFileExists(const AFileName:String):Boolean; inline;
function FSFileGetAttr(const AFileName:String):Integer; inline;
function FSFileSetAttr(const AFileName:String; AAttr:Integer):Integer; inline;
function FSFileSetDate(AHandle:Integer; AAge:Integer):Integer; inline;
function FSFileRead(AHandle:Integer; var ABuffer; ACount:Integer):Integer; inline;
function FSFileWrite(AHandle:Integer; const ABuffer; ACount:Integer):Integer; inline;
Directory functions
function FSRenameDir(const AOldName,ANewName:String):Boolean; inline;
function FSSetCurrentDir(const ADirName:String):Boolean; inline;
function FSDirectoryExists(const ADirName:String):Boolean; inline;
Search functions
function FSFindFirst(const APath:String; AAttr:Integer; var ASearchRec:TSearchRec):Integer; inline;
function FSFindNext(var ASearchRec:TSearchRec):Integer; inline;
Additional functions
function FSFileCopy(const ASourceFile,ADestFile:String; AFailIfExists:Boolean):Boolean; inline;
function FSFileCopyEx(const ASourceFile,ADestFile:String; AFailIfExists:Boolean; AUseSourceDate:Boolean; ADestDate:Integer; AUseSourceAttr:Boolean; ADestAttr:Integer):Boolean; inline;
function FSGetShortName(const AFileName:String):String; inline;
function FSGetLongName(const AFileName:String):String; inline;
function FSGetTrueName(const AFileName:String):String; inline;
Extended functions
function FSFileSeekEx(AHandle:Integer; const AOffset:Int64; AOrigin:Integer):Int64; inline;
function FSFileAgeEx(const AFileName:String):TFileTime; inline;
function FSFileSetDateEx(AHandle:Integer; AAge:TFileTime):Integer; inline;
function FSGetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
function FSSetFileTime(AHandle:THandle; ACreateTime,AAccessTime,AWriteTime:PFileTime):Boolean; inline;
function FSFindFirstEx(const APath:String; var ASearchRec:TFileSearchRec):Integer; inline;
function FSFindNextEx(var ASearchRec:TFileSearchRec):Integer; inline;
procedure FSFindCloseEx(var ASearchRec:TFileSearchRec); inline;
FileSystem functions (Win32 Compatibility)
Drive functions
function FSDefineDosDevice(const ADeviceName,ATargetPath:String; AFlags:LongWord):Boolean; inline;
function FSGetDiskType(const ARootPath:String):LongWord; inline;
function FSGetDiskFreeSpace(const ARootPath:String; var ASectorsPerCluster,ABytesPerSector,ANumberOfFreeClusters,ATotalNumberOfClusters:LongWord):Boolean; inline;
function FSGetDiskFreeSpaceEx(const APathName:String; var AFreeBytesAvailableToCaller,ATotalNumberOfBytes,ATotalNumberOfFreeBytes:Int64):Boolean; inline;
function FSGetVolumeInformation(const ARootPath:String; var AVolumeName:String; var AVolumeSerialNumber,AMaximumComponentLength,AFileSystemFlags:LongWord; var ASystemName:String):Boolean; inline;
function FSQueryDosDevice(const ARootPath:String):String; inline;
function FSSetVolumeLabel(const AVolume:String; const ALabel:String):Boolean; inline;
File functions
function FSCloseFile(AHandle:THandle):Boolean; inline;
function FSCopyFile(const AExistingName,ANewName:String; AFailIfExists:Boolean):Boolean; inline;
function FSCreateFile(const AFileName:String; AAccessMode,AShareMode,ACreateFlags,AFileAttributes:LongWord):THandle; inline;
function FSFindCloseFile(AHandle:THandle):Boolean; inline;
function FSFindFirstFile(const AFileName:String; var AFindData:TWin32FindData):THandle; inline;
function FSFindNextFile(AHandle:THandle; var AFindData:TWin32FindData):Boolean; inline;
function FSFlushFileBuffers(AHandle:THandle):Boolean; inline;
function FSGetFileAttributes(const AFileName:String):LongWord; inline;
function FSGetFileSize(AHandle:THandle; var AFileSizeHigh:LongWord):LongWord; inline;
function FSGetFullPathName(const AFileName:String):String; inline;
function FSGetShortPathName(const ALongPath:String):String; inline;
function FSMoveFile(const AExistingName,ANewName:String):Boolean; inline;
function FSReadFile(AHandle:THandle; var ABuffer; ABytesToRead:LongWord; var ABytesRead:LongWord):Boolean; inline;
function FSSetFileAttributes(const AFileName:String; AFileAttributes:LongWord):Boolean; inline;
function FSSetFilePointer(AHandle:THandle; ADistanceToMove:LongWord; var ADistanceToMoveHigh:LongWord; AMoveMethod:LongWord):LongWord; inline;
function FSSetFilePointerEx(AHandle:THandle; const ADistanceToMove:Int64; var ANewFilePointer:Int64; AMoveMethod:LongWord):Boolean; inline;
function FSWriteFile(AHandle:THandle;const ABuffer; ABytesToWrite:LongWord; var ABytesWritten:LongWord):Boolean; inline;
function FSGetLongPathName(const AShortPath:String):String; inline;
function FSSetFileShortName(const AFileName,AShortName:String):Boolean;
function FSSetFileShortNameEx(AHandle:THandle; const AShortName:String):Boolean;
function FSCreateHardLink(const ALinkName,AFileName:String):Boolean;
function FSCreateSymbolicLink(const ALinkName,ATargetName:String; ADirectory:Boolean):Boolean;
Directory functions
function FSCreateDirectory(const APathName:String):Boolean; inline;
function FSRemoveDirectory(const APathName:String):Boolean; inline;
function FSSetCurrentDirectory(const APathName:String):Boolean; inline;
RTL FileSystem functions
System file functions
procedure SystemDoRename(Name1,Name2:PChar; Name1Changeable,Name2Changeable:Boolean);
function SystemDoWrite(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
function SystemDoRead(Handle:THandle; Address:Pointer; Len:LongInt):LongInt;
procedure SystemDoOpen(var F; Name:PFileTextRecChar; Flags:LongInt; NameChangeable:Boolean);
System directory functions
Dos disk functions
Dos FindFirst/FindNext functions
function DosFindFirst(const Path:PathStr; Attr:Word; var f:SearchRec):Integer;
Dos file functions
SysUtils file functions
function SysUtilsFileOpen(const FileName:RawByteString; Mode:Integer):THandle;
function SysUtilsFileCreate(const FileName:RawByteString):THandle;
function SysUtilsDeleteFile(const FileName:RawByteString):Boolean;
function SysUtilsRenameFile(const OldName,NewName:RawByteString):Boolean;
function SysUtilsFileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt;
function SysUtilsFileTruncate(Handle:THandle;Size:Int64):Boolean;
function SysUtilsFileAge(const FileName:RawByteString):LongInt;
function SysUtilsFileExists(const FileName:RawByteString):Boolean;
function SysUtilsFileGetAttr(const FileName:RawByteString):LongInt;
function SysUtilsFileSetAttr(const FileName:RawByteString; Attr:LongInt):LongInt;
function SysUtilsFileSetDate(Handle:THandle; Age:LongInt):LongInt;
function SysUtilsFileRead(Handle:THandle; out Buffer; Count:LongInt):LongInt;
function SysUtilsFileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt;
function SysUtilsFileSeekEx(Handle:THandle; Offset:Int64; Origin:LongInt):Int64;
function SysUtilsInternalFindFirst(const Path:RawByteString; Attr:LongInt; out SearchRec:TSearchRec; var Name:RawByteString):LongInt;
function SysUtilsInternalFindNext(var SearchRec:TSearchRec; var Name:RawByteString):LongInt;
SysUtils disk functions
function SysUtilsDirectoryExists(const Directory:RawByteString):Boolean;
FileSystem logging functions
function FileSysLoggingStart(Logging:PLoggingDevice):LongWord;
function FileSysLoggingStop(Logging:PLoggingDevice):LongWord;
function FileSysLoggingOutput(Logging:PLoggingDevice; const Data:String):LongWord;
function FileSysLoggingSetTarget(Logging:PLoggingDevice; const Target:String):LongWord;
FileSystem helper functions
function FileSysStorageGetMediaType(Storage:PStorageDevice):TMediaType;
function FileSysStorageGetController(Storage:PStorageDevice):TDiskController;
procedure FileSysStorageDeviceAdd(Event:PStorageDeviceEvent);
procedure FileSysStorageDeviceInsert(Event:PStorageDeviceEvent);
function FileSysStorageDeviceRemove(Storage:PStorageDevice):LongWord;
function FileSysStorageDeviceEject(Storage:PStorageDevice):LongWord;
function FileSysStorageDeviceEnum(Storage:PStorageDevice; Data:Pointer):LongWord;
function FileSysStorageDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
function ComparePartitions(APartition1,APartition2:Pointer):Integer;
function StringToFileSysType(const AFileSysType:String):TFileSysType;
function StringToPartitionId(const APartitionId:String):Byte;
function CachePageTimeToDateTime(const APageTime:Int64):TDateTime;
Return to Unit Reference