Difference between revisions of "Unit VirtualDisk"

From Ultibo.org
Jump to: navigation, search
Line 1,056: Line 1,056:
 
----
 
----
  
''To be documented''
+
 
 +
'''Virtual disk controller'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ControllerInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDevices:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Reset(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function UnlockMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function EjectMedia(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaReady(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaChanged(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MediaLocked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Information(ADevice:TDiskDevice):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LBA(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function MediaType(ADevice:TDiskDevice):TMediaType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FloppyType(ADevice:TDiskDevice):TFloppyType; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Ready(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Locked(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Lockable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Readable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Writeable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Removable(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ChangeLine(ADevice:TDiskDevice):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function PhysicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PhysicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LogicalCylinders(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalHeads(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LogicalSectors(ADevice:TDiskDevice):LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SectorSize(ADevice:TDiskDevice):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SectorCount(ADevice:TDiskDevice):Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function DeviceInit:Boolean; override;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocatePartitions:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateVolumes:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreatePartition(AParent:TDiskPartition; APartitionId:Byte; ACount:LongWord; AActive:Boolean):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeletePartition(APartition:TDiskPartition):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ModifyPartition(APartition:TDiskPartition; APartitionId:Byte):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ActivatePartition(APartition:TDiskPartition; AActive:Boolean):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandPartition(APartition:TDiskPartition; const AStart,ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function PartitionInit:Boolean; override;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocatePartitions:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateVolumes:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FFlags:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FExtents:TFileSysList;</code>
 +
| List of Virtual Disk Extents
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBase:TVirtualDiskExtent;</code>
 +
| The first extent of the image
 +
|-
 +
| <code>FCurrent:TVirtualDiskExtent;</code>
 +
| The current delta extent if applicable
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadExtents:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseExtents:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveExtent(AExtent:TVirtualDiskExtent):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function FindExtent(const AFilename:String; ALock:Boolean):TVirtualDiskExtent; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTables:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveTable(ATable:TVirtualDiskTable):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetTable(ATable:TVirtualDiskTable):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTable(AExtent:TVirtualDiskExtent; const ASector:Int64; AWrite:Boolean):TVirtualDiskTable; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadBlocks(ATable:TVirtualDiskTable):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadBlock(ATable:TVirtualDiskTable; ABlockNo:LongWord):TVirtualDiskBlock; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddBlock(ATable:TVirtualDiskTable):TVirtualDiskBlock; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveBlock(ABlock:TVirtualDiskBlock):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetBlock(ABlock:TVirtualDiskBlock):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetBlock(ATable:TVirtualDiskTable; const ASector:Int64; AWrite:Boolean):TVirtualDiskBlock; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateParent(AExtent:TVirtualDiskExtent):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateSibling(AExtent:TVirtualDiskExtent):String; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Flags:LongWord read FFlags write FFlags;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Extents:TFileSysList read FExtents;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Base:TVirtualDiskExtent read FBase;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Current:TVirtualDiskExtent read FCurrent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function IsSplit:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionId:Byte; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetName(const AName:String); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionId:Byte; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetPartitionId:Byte; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ShrinkImage(const ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandImage(const ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHandle:THandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ConvertImage(AImageType:TImageType):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>function GetAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FDescriptor:TVirtualDiskExtent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Descriptor:TVirtualDiskExtent read FDescriptor;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ImageInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadDescriptor(const AFilename:String):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddDescriptor(const AFilename:String):TVirtualDiskVmwareExtent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveDescriptor(AExtent:TVirtualDiskVmwareExtent):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetDescriptor(AExtent:TVirtualDiskVmwareExtent):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetDescriptor:TVirtualDiskVmwareExtent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>function GetAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ChecksumFooter(AFooter:PVpcHardDiskFooter):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ChecksumSparse(ASparse:PVpcDynamicDiskHeader):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RoundToSector(AValue:LongWord;ASectorSize:Word):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadExtents:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTables:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetTable(ATable:TVirtualDiskTable):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadBlocks(ATable:TVirtualDiskTable):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadBlock(ATable:TVirtualDiskTable; ABlockNo:LongWord):TVirtualDiskBlock; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddBlock(ATable:TVirtualDiskTable):TVirtualDiskBlock; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetBlock(ABlock:TVirtualDiskBlock):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetBlock(ATable:TVirtualDiskTable; const ASector:Int64; AWrite:Boolean):TVirtualDiskBlock; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function TestBlock(ABlock:TVirtualDiskBlock; const ASector:Int64; ACount:LongWord; AUsed:Boolean):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MarkBlock(ABlock:TVirtualDiskBlock; const ASector:Int64; ACount:LongWord; AUsed:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function TestBitmap(ABuffer:Pointer; ASize,AStart,ACount:LongWord; AUsed:Boolean):LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MarkBitmap(ABuffer:Pointer; ASize,AStart,ACount:LongWord; AUsed:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateParent(AExtent:TVirtualDiskExtent):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateSibling(AExtent:TVirtualDiskExtent):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ImageInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>function GetAttributes:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function GetReady:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCylinders:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetHeads:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectors:LongWord; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSectorSize:Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSectorCount:Int64; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; var ABuffer):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteExtent(AExtent:TVirtualDiskExtent; ASector:LongWord; ACount:Word; const ABuffer):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadExtents:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CheckExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LoadExtent(ADelta,AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddExtent(AParent:TVirtualDiskExtent; const AFilename:String):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetExtent(AExtent:TVirtualDiskExtent):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetExtent(const ASector:Int64; AWrite,ALock:Boolean):TVirtualDiskExtent; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTables:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LoadTable(AExtent:TVirtualDiskExtent; ATableNo:LongWord):TVirtualDiskTable; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddTable(AExtent:TVirtualDiskExtent):TVirtualDiskTable; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SetTable(ATable:TVirtualDiskTable):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function LocateDelta(AExtent:TVirtualDiskExtent):String; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LocateParent(AExtent:TVirtualDiskExtent):String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function ImageInit:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Read(ASector:LongWord; ACount:Word; var ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Write(ASector:LongWord; ACount:Word; const ABuffer):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Allocated(ASector:LongWord; ACount:Word):Word; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResizeImage(const ASectorCount:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FController:TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetName:String; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function RecognizeImage(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MountImage(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function InsertImage(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function AcceptImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ShrinkImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ExpandImage(AImage:TDiskImage; const ASize:Int64):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function AcceptImage(AImage,ADest:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CopyImage(AImage,ADest:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>function CreateImageByType(const AName:String; AImageType:TImageType):TDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FController:TDiskController;</code>
 +
| &nbsp;
 +
|-
 +
|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>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function OpenImage(AImage:TDiskImage; const AName:String; AImageType:TImageType; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64; ACylinders,AHeads,ASectors:LongWord; APartitionId:Byte):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseImage(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcceptSnapshot(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function CreateSnapshot(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function DeleteSnapshot(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function MergeSnapshot(AImage:TDiskImage):Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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"|&nbsp;
 +
|-
 +
| <code>constructor Create(AImage:TVirtualDiskImage; ADelta,AParent:TVirtualDiskExtent);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TMutexHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FImage:TVirtualDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FDelta:TVirtualDiskExtent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FParent:TVirtualDiskExtent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFlags:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>FStartSector:Int64;</code>
 +
| First Sector contained by this Extent
 +
|-
 +
| <code>FSectorCount:Int64;</code>
 +
| Number of Sectors contained by this Extent
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBlockShiftCount:LongWord;</code>
 +
| Sector to Block Shift Count
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetFilename:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetFilename(const AFilename:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBlockShiftCount:LongWord; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Image:TVirtualDiskImage read FImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Delta:TVirtualDiskExtent read FDelta write FDelta;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Parent:TVirtualDiskExtent read FParent write FParent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Flags:LongWord read FFlags write FFlags;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Filename:String read GetFilename write SetFilename;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Handle:THandle read FHandle write FHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DataOffset:Int64 read FDataOffset write FDataOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BlockSize:LongWord read FBlockSize write FBlockSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property BlockShiftCount:LongWord read FBlockShiftCount write FBlockShiftCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function IsFixed:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function IsDynamic:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function IsBase:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function IsDelta:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function IsDevice:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function HasDelta:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>function IsDescriptor:Boolean;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>function HasDescriptor:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHeader:PVpcHardDiskFooter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFooter:PVpcHardDiskFooter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSparse:PVpcDynamicDiskHeader;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FHeaderOffset:Int64;</code>
 +
| Absolute byte offset of Header in file
 +
|-
 +
| <code>FHeaderSize:LongWord;</code>
 +
| Size of Header in image
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFooterOffset:Int64;</code>
 +
| Absolute byte offset of Footer in file
 +
|-
 +
| <code>FFooterSize:LongWord;</code>
 +
| Size of Footer in image
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>property Footer:PVpcHardDiskFooter read FFooter;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Sparse:PVpcDynamicDiskHeader read FSparse;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Table:TVirtualDiskVpcTable read FTable;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Groups:TFileSysList read FGroups;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HeaderOffset:Int64 read FHeaderOffset write FHeaderOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property HeaderSize:LongWord read FHeaderSize write FHeaderSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property FooterOffset:Int64 read FFooterOffset write FFooterOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property FooterSize:LongWord read FFooterSize write FFooterSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SparseOffset:Int64 read FSparseOffset write FSparseOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SparseSize:LongWord read FSparseSize write FSparseSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function HasFooter:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FHeader:PVboxDiskHeader;</code>
 +
| Header from Disk Extent
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>property Table:TVirtualDiskVboxTable read FTable;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property HeaderOffset:Int64 read FHeaderOffset write FHeaderOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property HeaderSize:LongWord read FHeaderSize write FHeaderSize;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''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
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(AImage:TVirtualDiskImage; AExtent:TVirtualDiskExtent);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FImage:TVirtualDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FExtent:TVirtualDiskExtent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FTableOffset:Int64;</code>
 +
| Absolute byte offset of Table in file
 +
|-
 +
| <code>FTableSize:LongWord;</code>
 +
| Size of Table data in file
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>property Extent:TVirtualDiskExtent read FExtent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property TableOffset:Int64 read FTableOffset write FTableOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property TableSize:LongWord read FTableSize write FTableSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Data:Pointer read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Data:Pointer read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''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
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FImage:TVirtualDiskImage;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FTable:TVirtualDiskTable;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>property Table:TVirtualDiskTable read FTable;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property DataOffset:Int64 read FDataOffset write FDataOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BlockOffset:Int64 read FBlockOffset write FBlockOffset;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BlockSize:LongWord read FBlockSize write FBlockSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SectorCount:Int64 read FSectorCount write FSectorCount;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FGroupNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|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>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Blocks:TFileSysList read FBlocks;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''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"|&nbsp;
 +
|-
 +
| <code>constructor Create(AImage:TVirtualDiskImage; ATable:TVirtualDiskTable);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FBlockNo:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Data:Pointer read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property BlockNo:LongWord read FBlockNo write FBlockNo;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 00:48, 23 March 2017

Return to Unit Reference


Description


Ultibo Virtual Disk interface unit

To be documented

Constants



[Expand]
Virtual disk specific constants VIRTUAL_*


[Expand]
Virtual flag contants virtualFlag*


[Expand]
VMware constants vmware*


[Expand]
VMware disk type constants vmware*DiskType


[Expand]
VMware descriptor tag constants vmwareTag*


[Expand]
VMware create type constants vmwareCreateType_*


[Expand]
VMware access type constants vmwareAccessType_*


[Expand]
VMware extent type constants vmwareExtentType_*


[Expand]
VMware disk flag constants vmwareFlag*


[Expand]
VMware compression type constants vmwareCompression*


[Expand]
VPC constants vpc*


[Expand]
VPC disk type constants vpcDiskType*


[Expand]
VPC feature constants vpcFeature*


[Expand]
VPC creator host OS constants vpcCreator*


[Expand]
VPC platform code constants vpcPlatform*


[Expand]
VPC bitmap mask constants vpcBitmapMask*


[Expand]
VirtualBox constants vbox*


[Expand]
VirtualBox disk type constants vboxDiskType*


[Expand]
VirtualBox disk flag constants vboxDiskFlags*


Type definitions



ESX sparse extent header

[Expand]

PEsxSparseExtentHeader = ^TEsxSparseExtentHeader;

TEsxSparseExtentHeader = packed record

VMware sparse extent header

[Expand]

PVmwareSparseExtentHeader = ^TVmwareSparseExtentHeader;

TVmwareSparseExtentHeader = packed record

Microsoft virtual PC dish geometry

[Expand]

PVpcDiskGeometry = ^TVpcDiskGeometry;

TVpcDiskGeometry = packed record

Microsoft virtual PC parent locator

[Expand]

PVpcParentLocator = ^TVpcParentLocator;

TVpcParentLocator = packed record

Microsoft virtual PC hard disk footer

[Expand]

PVpcHardDiskFooter = ^TVpcHardDiskFooter;

TVpcHardDiskFooter = packed record

Microsoft virtual PC dynamic disk header

[Expand]

PVpcDynamicDiskHeader = ^TVpcDynamicDiskHeader;

TVpcDynamicDiskHeader = packed record

VirtualBox disk header

[Expand]

PVboxDiskHeader = ^TVboxDiskHeader;

TVboxDiskHeader = packed record


Class definitions



Virtual disk controller

[Expand]

TVirtualDiskController = class(TDiskController)

Virtual disk device

[Expand]

TVirtualDiskDevice = class(TDiskDevice)

Virtual disk partition

[Expand]

TVirtualDiskPartition = class(TDiskPartition)

Virtual disk image

[Expand]

TVirtualDiskImage = class(TDiskImage)

Virtual disk memory image

[Expand]

TVirtualDiskMemoryImage = class(TVirtualDiskImage)

Virtual disk file image

[Expand]

TVirtualDiskFileImage = class(TVirtualDiskImage)

Virtual disk device image

[Expand]

TVirtualDiskDeviceImage = class(TVirtualDiskImage)

Virtual disk ISO image

[Expand]

TVirtualDiskIsoImage = class(TVirtualDiskImage)

Virtual disk Bochs image

[Expand]

TVirtualDiskBochsImage = class(TVirtualDiskImage)

Virtual disk VMware image

[Expand]

TVirtualDiskVmwareImage = class(TVirtualDiskImage)

Virtual disk VPC image

[Expand]

TVirtualDiskVpcImage = class(TVirtualDiskImage)

Virtual disk VirtualBox image

[Expand]

TVirtualDiskVboxImage = class(TVirtualDiskImage)

Virtual recognizer

[Expand]

TVirtualRecognizer = class(TRecognizer)

Virtual disk resizer

[Expand]

TVirtualDiskResizer = class(TDiskResizer)

Virtual disk copier

[Expand]

TVirtualDiskCopier = class(TDiskCopier)

Virtual disk imager

[Expand]

TVirtualDiskImager = class(TDiskImager)

Virtual disk extent

[Expand]

TVirtualDiskExtent = class(TListObject)

Virtual disk VMware extent

[Expand]

TVirtualDiskVmwareExtent = class(TVirtualDiskExtent)

Virtual disk VPC extent

[Expand]

TVirtualDiskVpcExtent = class(TVirtualDiskExtent)

Virtual disk VirtualBox extent

[Expand]

TVirtualDiskVboxExtent = class(TVirtualDiskExtent)

Virtual disk table

[Expand]

TVirtualDiskTable = class(TListObject)

Virtual disk VMware table

[Expand]

TVirtualDiskVmwareTable = class(TVirtualDiskTable)

Virtual disk VPC table

[Expand]

TVirtualDiskVpcTable = class(TVirtualDiskTable)

Virtual disk VirtualBox table

[Expand]

TVirtualDiskVboxTable = class(TVirtualDiskTable)

Virtual disk block

[Expand]

TVirtualDiskBlock = class(TListObject)

Virtual disk VMware block

[Expand]

TVirtualDiskVmwareBlock = class(TVirtualDiskBlock)

Virtual disk VPC group

[Expand]

TVirtualDiskVpcGroup = class(TListObject)

Virtual disk VPC block

[Expand]

TVirtualDiskVpcBlock = class(TVirtualDiskBlock)


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure VirtualInit;
Description: To be documented


[Expand]
procedure VirtualQuit;
Description: To be documented


Virtual disk helper functions

[Expand]
function VirtualDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
Description: Creates a pointer and copies data from a buffer


[Expand]
function VirtualPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
Description: Copies data to a buffer from supplied pointer


[Expand]
function VirtualDataToString(const AData; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied data to a string


[Expand]
function VirtualStringToData(const AString:String; var AData; ASize:Integer ;AUnicode:Boolean):Boolean;
Description: Converts the supplied string to data


Return to Unit Reference