public Footer(Geometry geometry, long capacity, FileType type) { Cookie = FileCookie; Features = FeatureReservedMustBeSet; FileFormatVersion = Version1; DataOffset = -1; Timestamp = DateTime.UtcNow; CreatorApp = "dutl"; CreatorVersion = Version6Point1; CreatorHostOS = WindowsHostOS; OriginalSize = capacity; CurrentSize = capacity; Geometry = geometry; DiskType = type; UniqueId = Guid.NewGuid(); ////SavedState = 0; }
/// <summary> /// Converts a geometry into one that is BIOS-safe, if not already. /// </summary> /// <param name="geometry">The geometry to make BIOS-safe.</param> /// <param name="capacity">The capacity of the disk.</param> /// <returns>The new geometry</returns> /// <remarks>This method returns the LBA-Assisted geometry if the given geometry isn't BIOS-safe.</remarks> public static Geometry MakeBiosSafe(Geometry geometry, long capacity) { if (geometry == null) { return LbaAssistedBiosGeometry(capacity); } else if (geometry.IsBiosSafe) { return geometry; } else { return LbaAssistedBiosGeometry(capacity); } }
/// <summary> /// Gets the 'Large' BIOS geometry for a disk, given it's physical geometry. /// </summary> /// <param name="ideGeometry">The physical (aka IDE) geometry of the disk</param> /// <returns>The geometry a BIOS using the 'Large' method for calculating disk geometry will indicate for the disk</returns> public static Geometry LargeBiosGeometry(Geometry ideGeometry) { int cylinders = ideGeometry.Cylinders; int heads = ideGeometry.HeadsPerCylinder; int sectors = ideGeometry.SectorsPerTrack; while (cylinders > 1024 && heads <= 127) { cylinders >>= 1; heads <<= 1; } return new Geometry(cylinders, heads, sectors); }
public Footer(Footer toCopy) { Cookie = toCopy.Cookie; Features = toCopy.Features; FileFormatVersion = toCopy.FileFormatVersion; DataOffset = toCopy.DataOffset; Timestamp = toCopy.Timestamp; CreatorApp = toCopy.CreatorApp; CreatorVersion = toCopy.CreatorVersion; CreatorHostOS = toCopy.CreatorHostOS; OriginalSize = toCopy.OriginalSize; CurrentSize = toCopy.CurrentSize; Geometry = toCopy.Geometry; DiskType = toCopy.DiskType; Checksum = toCopy.Checksum; UniqueId = toCopy.UniqueId; SavedState = toCopy.SavedState; }