/// <summary> /// Initializes a new instance of the BiosPartitionedDiskBuilder class. /// </summary> /// <param name="capacity">The capacity of the disk (in bytes)</param> /// <param name="biosGeometry">The BIOS geometry of the disk</param> public BiosPartitionedDiskBuilder(long capacity, Geometry biosGeometry) { _capacity = capacity; _biosGeometry = biosGeometry; _bootSectors = new SparseMemoryStream(); _bootSectors.SetLength(capacity); _partitionTable = BiosPartitionTable.Initialize(_bootSectors, _biosGeometry); _partitionContents = new Dictionary<int, BuilderExtent>(); }
public BiosPartitionedDiskBuilder(long capacity, byte[] bootSectors, Geometry biosGeometry) { _capacity = capacity; _biosGeometry = biosGeometry; _bootSectors = new SparseMemoryStream(); _bootSectors.SetLength(capacity); _bootSectors.Write(bootSectors, 0, bootSectors.Length); _partitionTable = new BiosPartitionTable(_bootSectors, biosGeometry); _partitionContents = new Dictionary<int, BuilderExtent>(); }
internal BiosPartitionInfo(BiosPartitionTable table, BiosPartitionRecord record) { _table = table; _record = record; }
/// <summary> /// Initializes a new instance of the BiosPartitionedDiskBuilder class by /// cloning the partition structure of a source disk. /// </summary> /// <param name="sourceDisk">The disk to clone</param> public BiosPartitionedDiskBuilder(VirtualDisk sourceDisk) { _capacity = sourceDisk.Capacity; _biosGeometry = sourceDisk.BiosGeometry; _bootSectors = new SparseMemoryStream(); _bootSectors.SetLength(_capacity); foreach (var extent in new BiosPartitionTable(sourceDisk).GetMetadataDiskExtents()) { sourceDisk.Content.Position = extent.Start; byte[] buffer = Utilities.ReadFully(sourceDisk.Content, (int)extent.Length); _bootSectors.Position = extent.Start; _bootSectors.Write(buffer, 0, buffer.Length); } _partitionTable = new BiosPartitionTable(_bootSectors, _biosGeometry); _partitionContents = new Dictionary<int, BuilderExtent>(); }