Difference between revisions of "Unit VirtualDisk"
Line 1,056: | Line 1,056: | ||
---- | ---- | ||
− | '' | + | |
+ | '''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%;"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </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"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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%;"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | |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> | ||
+ | |||
+ | '''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"| | ||
+ | |- | ||
+ | | <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> | ||
+ | |||
+ | '''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> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 00:48, 23 March 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo Virtual Disk interface unit
To be documented
Constants
VIRTUAL_*
virtualFlag*
vmware*
vmware*DiskType
vmwareTag*
vmwareCreateType_*
vmwareAccessType_*
vmwareExtentType_*
vmwareFlag*
vmwareCompression*
vpc*
vpcDiskType*
vpcFeature*
vpcCreator*
vpcPlatform*
vpcBitmapMask*
vbox*
vboxDiskType*
vboxDiskFlags*
Type definitions
ESX sparse extent header
VMware sparse extent header
PVmwareSparseExtentHeader = ^TVmwareSparseExtentHeader;
TVmwareSparseExtentHeader = packed record
Microsoft virtual PC dish geometry
Microsoft virtual PC parent locator
Microsoft virtual PC hard disk footer
Microsoft virtual PC dynamic disk header
VirtualBox disk header
Class definitions
Virtual disk controller
TVirtualDiskController = class(TDiskController)
Virtual disk device
TVirtualDiskDevice = class(TDiskDevice)
Virtual disk partition
TVirtualDiskPartition = class(TDiskPartition)
Virtual disk image
TVirtualDiskImage = class(TDiskImage)
Virtual disk memory image
TVirtualDiskMemoryImage = class(TVirtualDiskImage)
Virtual disk file image
TVirtualDiskFileImage = class(TVirtualDiskImage)
Virtual disk device image
TVirtualDiskDeviceImage = class(TVirtualDiskImage)
Virtual disk ISO image
TVirtualDiskIsoImage = class(TVirtualDiskImage)
Virtual disk Bochs image
TVirtualDiskBochsImage = class(TVirtualDiskImage)
Virtual disk VMware image
TVirtualDiskVmwareImage = class(TVirtualDiskImage)
Virtual disk VPC image
TVirtualDiskVpcImage = class(TVirtualDiskImage)
Virtual disk VirtualBox image
TVirtualDiskVboxImage = class(TVirtualDiskImage)
Virtual recognizer
TVirtualRecognizer = class(TRecognizer)
Virtual disk resizer
TVirtualDiskResizer = class(TDiskResizer)
Virtual disk copier
TVirtualDiskCopier = class(TDiskCopier)
Virtual disk imager
TVirtualDiskImager = class(TDiskImager)
Virtual disk extent
TVirtualDiskExtent = class(TListObject)
Virtual disk VMware extent
TVirtualDiskVmwareExtent = class(TVirtualDiskExtent)
Virtual disk VPC extent
TVirtualDiskVpcExtent = class(TVirtualDiskExtent)
Virtual disk VirtualBox extent
TVirtualDiskVboxExtent = class(TVirtualDiskExtent)
Virtual disk table
TVirtualDiskTable = class(TListObject)
Virtual disk VMware table
TVirtualDiskVmwareTable = class(TVirtualDiskTable)
Virtual disk VPC table
TVirtualDiskVpcTable = class(TVirtualDiskTable)
Virtual disk VirtualBox table
TVirtualDiskVboxTable = class(TVirtualDiskTable)
Virtual disk block
TVirtualDiskBlock = class(TListObject)
Virtual disk VMware block
TVirtualDiskVmwareBlock = class(TVirtualDiskBlock)
Virtual disk VPC group
TVirtualDiskVpcGroup = class(TListObject)
Virtual disk VPC block
TVirtualDiskVpcBlock = class(TVirtualDiskBlock)
Public variables
None defined
Function declarations
Initialization functions
Virtual disk helper functions
function VirtualDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
function VirtualPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
function VirtualDataToString(const AData; ASize:Integer; AUnicode:Boolean):String;
function VirtualStringToData(const AString:String; var AData; ASize:Integer ;AUnicode:Boolean):Boolean;
Return to Unit Reference