|
|
Line 1,057: |
Line 1,057: |
| | | |
| | | |
− | '''Virtual disk controller''' | + | '''Virtual disk specific classes |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TVirtualDiskController = 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> | + | | [[TVirtualDiskController|<code>TVirtualDiskController = class(TDiskController)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |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 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 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>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk device'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskDevice = class(TDiskDevice)</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> | + | | [[TVirtualDiskDevice|<code>TVirtualDiskDevice = class(TDiskDevice)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function DeviceInit:Boolean; override;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LocatePartitions:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateVolumes:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreatePartition(AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeletePartition(APartition:TDiskPartition):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk partition'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskPartition = class(TDiskPartition)</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> | + | | [[TVirtualDiskPartition|<code>TVirtualDiskPartition = class(TDiskPartition)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function PartitionInit:Boolean; override;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LocatePartitions:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateVolumes:Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskImage = class(TDiskImage)</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> | + | | [[TVirtualDiskImage|<code>TVirtualDiskImage = class(TDiskImage)</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;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FFlags:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FExtents:TFileSysList;</code>
| + | |
− | | List of Virtual Disk Extents
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FBase:TVirtualDiskExtent;</code>
| + | |
− | | The first extent of the image
| + | |
− | |-
| + | |
− | | <code>FCurrent:TVirtualDiskExtent;</code>
| + | |
− | | The current delta extent if applicable
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadExtents:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseExtents:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveExtent(AExtent:TVirtualDiskExtent):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindExtent(const AFilename:String; ALock:Boolean):TVirtualDiskExtent; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTables:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveTable(ATable:TVirtualDiskTable):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetTable(ATable:TVirtualDiskTable):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetTable(AExtent:TVirtualDiskExtent; const ASector:Int64; AWrite:Boolean):TVirtualDiskTable; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadBlocks(ATable:TVirtualDiskTable):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadBlock(ATable:TVirtualDiskTable; ABlockNo:LongWord):TVirtualDiskBlock; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddBlock(ATable:TVirtualDiskTable):TVirtualDiskBlock; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveBlock(ABlock:TVirtualDiskBlock):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetBlock(ABlock:TVirtualDiskBlock):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetBlock(ATable:TVirtualDiskTable; const ASector:Int64; AWrite:Boolean):TVirtualDiskBlock; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateParent(AExtent:TVirtualDiskExtent):String; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateSibling(AExtent:TVirtualDiskExtent):String; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Flags:LongWord read FFlags write FFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Extents:TFileSysList read FExtents;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Base:TVirtualDiskExtent read FBase;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Current:TVirtualDiskExtent read FCurrent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IsSplit:Boolean; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk memory image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskMemoryImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskMemoryImage|<code>TVirtualDiskMemoryImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPartitionId:Byte; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetName(const AName:String); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk file image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskFileImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskFileImage|<code>TVirtualDiskFileImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FHandle:THandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPartitionId:Byte; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk device image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskDeviceImage = class(TVirtualDiskImage)</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>FHandle:THandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPartitionId:Byte; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ShrinkImage(const ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExpandImage(const ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
− | | <code>function CloseImage:Boolean; override;</code> | + | | [[TVirtualDiskDeviceImage|<code>TVirtualDiskDeviceImage = class(TVirtualDiskImage)</code>]] |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk ISO image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskIsoImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskIsoImage|<code>TVirtualDiskIsoImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FHandle:THandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk Bochs image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskBochsImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskBochsImage|<code>TVirtualDiskBochsImage = class(TVirtualDiskImage)</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;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VMware image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVmwareImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskVmwareImage|<code>TVirtualDiskVmwareImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetAttributes:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FDescriptor:TVirtualDiskExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Descriptor:TVirtualDiskExtent read FDescriptor;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ImageInit:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadDescriptor(const AFilename:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddDescriptor(const AFilename:String):TVirtualDiskVmwareExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveDescriptor(AExtent:TVirtualDiskVmwareExtent):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetDescriptor(AExtent:TVirtualDiskVmwareExtent):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetDescriptor:TVirtualDiskVmwareExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VPC image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVpcImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskVpcImage|<code>TVirtualDiskVpcImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetAttributes:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ChecksumFooter(AFooter:PVpcHardDiskFooter):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ChecksumSparse(ASparse:PVpcDynamicDiskHeader):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RoundToSector(AValue:LongWord;ASectorSize:Word):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadExtents:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTables:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetTable(ATable:TVirtualDiskTable):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadBlocks(ATable:TVirtualDiskTable):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadBlock(ATable:TVirtualDiskTable; ABlockNo:LongWord):TVirtualDiskBlock; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddBlock(ATable:TVirtualDiskTable):TVirtualDiskBlock; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetBlock(ABlock:TVirtualDiskBlock):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetBlock(ATable:TVirtualDiskTable; const ASector:Int64; AWrite:Boolean):TVirtualDiskBlock; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TestBlock(ABlock:TVirtualDiskBlock; const ASector:Int64; ACount:LongWord; AUsed:Boolean):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MarkBlock(ABlock:TVirtualDiskBlock; const ASector:Int64; ACount:LongWord; AUsed:Boolean):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TestBitmap(ABuffer:Pointer; ASize,AStart,ACount:LongWord; AUsed:Boolean):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MarkBitmap(ABuffer:Pointer; ASize,AStart,ACount:LongWord; AUsed:Boolean):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateParent(AExtent:TVirtualDiskExtent):String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateSibling(AExtent:TVirtualDiskExtent):String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function ImageInit:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VirtualBox image'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVboxImage = class(TVirtualDiskImage)</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> | + | | [[TVirtualDiskVboxImage|<code>TVirtualDiskVboxImage = class(TVirtualDiskImage)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetAttributes:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReady:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCylinders:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHeads:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectors:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSectorSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSectorCount:Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadExtents:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTables:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SetTable(ATable:TVirtualDiskTable):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function LocateParent(AExtent:TVirtualDiskExtent):String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function ImageInit:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeSnapshot:Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual recognizer'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualRecognizer = 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; AController:TDiskController);</code> | + | | [[TVirtualRecognizer|<code>TVirtualRecognizer = class(TRecognizer)</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;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FController:TDiskController;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetName:String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function RecognizeImage(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MountImage(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function InsertImage(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk resizer'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskResizer = class(TDiskResizer)</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> | + | | [[TVirtualDiskResizer|<code>TVirtualDiskResizer = class(TDiskResizer)</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>
| + | |
− | |-
| + | |
− | | <code>function AcceptImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ShrinkImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExpandImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk copier'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskCopier = class(TDiskCopier)</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> | + | | [[TVirtualDiskCopier|<code>TVirtualDiskCopier = class(TDiskCopier)</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>
| + | |
− | |-
| + | |
− | | <code>function AcceptImage(AImage,ADest:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CopyImage(AImage,ADest:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk imager'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskImager = class(TDiskImager)</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; AController:TDiskController);</code> | + | | [[TVirtualDiskImager|<code>TVirtualDiskImager = class(TDiskImager)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateImageByType(const AName:String; AImageType:TImageType):TDiskImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FController:TDiskController;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function AcceptImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):Boolean; override;</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; override;</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; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CloseImage(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcceptSnapshot(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSnapshot(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSnapshot(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeSnapshot(AImage:TDiskImage):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk extent'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskExtent = 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: Represents an Extent (usually a file) forming part of a virtual disk
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ADelta,AParent:TVirtualDiskExtent);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FImage:TVirtualDiskImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FDelta:TVirtualDiskExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FParent:TVirtualDiskExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FFlags:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FFilename:String;</code>
| + | |
− | | Filename of the file backing this Extent
| + | |
− | |-
| + | |
− | | <code>FHandle:THandle;</code>
| + | |
− | | DiskDriver Handle to the file of this Extent
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FDataOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Data in file (Where Applicable)
| + | |
− | |-
| + | |
− | | <code>FBlockSize:LongWord;</code>
| + | |
− | | Size of each data block in file
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStartSector:Int64;</code>
| + | |
− | | First Sector contained by this Extent
| + | |
− | |-
| + | |
− | | <code>FSectorCount:Int64;</code>
| + | |
− | | Number of Sectors contained by this Extent
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FBlockShiftCount:LongWord;</code>
| + | |
− | | Sector to Block Shift Count
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetFilename:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetFilename(const AFilename:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetBlockShiftCount:LongWord; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Image:TVirtualDiskImage read FImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Delta:TVirtualDiskExtent read FDelta write FDelta;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Parent:TVirtualDiskExtent read FParent write FParent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Flags:LongWord read FFlags write FFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Filename:String read GetFilename write SetFilename;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Handle:THandle read FHandle write FHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property DataOffset:Int64 read FDataOffset write FDataOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BlockSize:LongWord read FBlockSize write FBlockSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property BlockShiftCount:LongWord read FBlockShiftCount write FBlockShiftCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IsFixed:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function IsDynamic:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IsBase:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function IsDelta:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IsDevice:Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
− | | <code>function HasDelta:Boolean; virtual;</code> | + | | [[TVirtualDiskExtent|<code>TVirtualDiskExtent = class(TListObject)</code>]] |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VMware extent'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVmwareExtent = class(TVirtualDiskExtent)</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> | + | | [[TVirtualDiskVmwareExtent|<code>TVirtualDiskVmwareExtent = class(TVirtualDiskExtent)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function IsDescriptor:Boolean;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>function HasDescriptor:Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VPC extent'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVpcExtent = class(TVirtualDiskExtent)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ADelta,AParent:TVirtualDiskExtent);</code> | + | | [[TVirtualDiskVpcExtent|<code>TVirtualDiskVpcExtent = class(TVirtualDiskExtent)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FHeader:PVpcHardDiskFooter;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FFooter:PVpcHardDiskFooter;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FSparse:PVpcDynamicDiskHeader;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FHeaderOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Header in file
| + | |
− | |-
| + | |
− | | <code>FHeaderSize:LongWord;</code>
| + | |
− | | Size of Header in image
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FFooterOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Footer in file
| + | |
− | |-
| + | |
− | | <code>FFooterSize:LongWord;</code>
| + | |
− | | Size of Footer in image
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FSparseOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Dynamic Header in file
| + | |
− | |-
| + | |
− | | <code>FSparseSize:LongWord;</code>
| + | |
− | | Size of Dynamic Header in image
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FTable:TVirtualDiskVpcTable;</code>
| + | |
− | | VirtualPC images contain only one Table per Extent
| + | |
− | |-
| + | |
− | | <code>FGroups:TFileSysList;</code>
| + | |
− | | Block bitmap Groups
| + | |
− | |-
| + | |
− | | <code>FGroupLocal:TMutexHandle;</code>
| + | |
− | | Local Lock shared by all Block bitmap Groups
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Header:PVpcHardDiskFooter read FHeader;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Footer:PVpcHardDiskFooter read FFooter;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Sparse:PVpcDynamicDiskHeader read FSparse;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Table:TVirtualDiskVpcTable read FTable;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Groups:TFileSysList read FGroups;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property HeaderOffset:Int64 read FHeaderOffset write FHeaderOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property HeaderSize:LongWord read FHeaderSize write FHeaderSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property FooterOffset:Int64 read FFooterOffset write FFooterOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FooterSize:LongWord read FFooterSize write FFooterSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property SparseOffset:Int64 read FSparseOffset write FSparseOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SparseSize:LongWord read FSparseSize write FSparseSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function HasFooter:Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''Virtual disk VirtualBox extent'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVboxExtent = class(TVirtualDiskExtent)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ADelta,AParent:TVirtualDiskExtent);</code> | + | | [[TVirtualDiskVboxExtent|<code>TVirtualDiskVboxExtent = class(TVirtualDiskExtent)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FHeader:PVboxDiskHeader;</code>
| + | |
− | | Header from Disk Extent
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FHeaderOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Header in file
| + | |
− | |-
| + | |
− | | <code>FHeaderSize:LongWord;</code>
| + | |
− | | Size of Header in file
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FTable:TVirtualDiskVboxTable;</code>
| + | |
− | | VirtualBox images contain only one Table per Extent
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Header:PVboxDiskHeader read FHeader;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Table:TVirtualDiskVboxTable read FTable;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property HeaderOffset:Int64 read FHeaderOffset write FHeaderOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property HeaderSize:LongWord read FHeaderSize write FHeaderSize;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''Virtual disk table'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskTable = 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: Represents a Table of blocks within an Extent of a virtual disk | + | | [[TVirtualDiskTable|<code>TVirtualDiskTable = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AImage:TVirtualDiskImage; AExtent:TVirtualDiskExtent);</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;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FImage:TVirtualDiskImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FExtent:TVirtualDiskExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FTableOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Table in file
| + | |
− | |-
| + | |
− | | <code>FTableSize:LongWord;</code>
| + | |
− | | Size of Table data in file
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStartSector:Int64;</code>
| + | |
− | | First Sector represented by this Table
| + | |
− | |-
| + | |
− | | <code>FSectorCount:Int64;</code>
| + | |
− | | Number of Sectors represented by this Table
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Image:TVirtualDiskImage read FImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Extent:TVirtualDiskExtent read FExtent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property TableOffset:Int64 read FTableOffset write FTableOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property TableSize:LongWord read FTableSize write FTableSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VMware table'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVmwareTable = class(TVirtualDiskTable)</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> | + | | [[TVirtualDiskVmwareTable|<code>TVirtualDiskVmwareTable = class(TVirtualDiskTable)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VPC table'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVpcTable = class(TVirtualDiskTable)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AImage:TVirtualDiskImage; AExtent:TVirtualDiskExtent);</code> | + | | [[TVirtualDiskVpcTable|<code>TVirtualDiskVpcTable = class(TVirtualDiskTable)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData write FData;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VirtualBox table'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVboxTable = class(TVirtualDiskTable)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AImage:TVirtualDiskImage; AExtent:TVirtualDiskExtent);</code> | + | | [[TVirtualDiskVboxTable|<code>TVirtualDiskVboxTable = class(TVirtualDiskTable)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData write FData;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''Virtual disk block'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskBlock = 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: Represents a Block bitmap showing data allocation within a virtual disk | + | | [[TVirtualDiskBlock|<code>TVirtualDiskBlock = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</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;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FImage:TVirtualDiskImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FTable:TVirtualDiskTable;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FDataOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Data in file (Where Applicable)
| + | |
− | |-
| + | |
− | | <code>FBlockOffset:Int64;</code>
| + | |
− | | Absolute byte offset of Block in file
| + | |
− | |-
| + | |
− | | <code>FBlockSize:LongWord;</code>
| + | |
− | | Size of Block bitmap in file
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStartSector:Int64;</code>
| + | |
− | | First Sector represented by this Block
| + | |
− | |-
| + | |
− | | <code>FSectorCount:Int64;</code>
| + | |
− | | Number of Sectors represented by this Block
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Image:TVirtualDiskImage read FImage;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Table:TVirtualDiskTable read FTable;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property DataOffset:Int64 read FDataOffset write FDataOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BlockOffset:Int64 read FBlockOffset write FBlockOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BlockSize:LongWord read FBlockSize write FBlockSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VMware block'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVmwareBlock = class(TVirtualDiskBlock)</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> | + | | [[TVirtualDiskVmwareBlock|<code>TVirtualDiskVmwareBlock = class(TVirtualDiskBlock)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VPC group'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVpcGroup = 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: Represents a Group of bitmap Blocks | + | | [[TVirtualDiskVpcGroup|<code>TVirtualDiskVpcGroup = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FGroupNo:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FBlocks:TFileSysList;</code>
| + | |
− | | Block bitmap Blocks
| + | |
− | |-
| + | |
− | | <code>FBlockLocal:TMutexHandle;</code>
| + | |
− | | Local Lock shared by all Block bitmap Blocks
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property GroupNo:LongWord read FGroupNo write FGroupNo;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Blocks:TFileSysList read FBlocks;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''Virtual disk VPC block'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TVirtualDiskVpcBlock = class(TVirtualDiskBlock)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;" | + | |
− | |-
| + | |
− | |colspan="2"|Note: VirtualBox images do not contain a bitmap, allocation granularity is per block
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FBlockNo:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData write FData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
− | | <code>property BlockNo:LongWord read FBlockNo write FBlockNo;</code> | + | | [[TVirtualDiskVpcBlock|<code>TVirtualDiskVpcBlock = class(TVirtualDiskBlock)</code>]] |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| |
| <br /> | | <br /> |
| | | |