/// <summary> /// Translates an IDE (aka Physical) geometry to a BIOS (aka Logical) geometry. /// </summary> /// <param name="capacity">The capacity of the disk, required if the geometry is an approximation on the actual disk size</param> /// <param name="translation">The translation to perform</param> /// <returns>The translated disk geometry</returns> public Geometry TranslateToBios(long capacity, GeometryTranslation translation) { if (capacity <= 0) { capacity = TotalSectors * 512L; } switch (translation) { case GeometryTranslation.None: return(this); case GeometryTranslation.Auto: if (IsBiosSafe) { return(this); } else { return(Geometry.LbaAssistedBiosGeometry(capacity)); } case GeometryTranslation.Lba: return(Geometry.LbaAssistedBiosGeometry(capacity)); case GeometryTranslation.Large: return(Geometry.LargeBiosGeometry(this)); default: throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Translation mode '{0}' not yet implemented", translation), "translation"); } }