public static string GetExtentsInformation(DynamicVolume volume) { List <DynamicDiskExtent> extents = volume.DynamicExtents; StringBuilder builder = new StringBuilder(); for (int extentIndex = 0; extentIndex < extents.Count; extentIndex++) { DynamicDiskExtent extent = extents[extentIndex]; string extentOffsetString; string diskIDString = String.Empty; if (extent.Disk != null) { long extentOffset = extent.FirstSector * extent.Disk.BytesPerSector; extentOffsetString = FormattingHelper.GetStandardSizeString(extentOffset); VolumeManagerDatabase database = VolumeManagerDatabase.ReadFromDisk(extent.Disk); if (database != null) { ExtentRecord extentRecord = database.FindExtentByExtentID(extent.ExtentID); if (extentRecord != null) { diskIDString = extentRecord.DiskId.ToString(); } } } else { extentOffsetString = "N/A"; } string extentSizeString = FormattingHelper.GetStandardSizeString(extent.Size); builder.AppendFormat("Extent {0}, ID: {1}, Name: {2}, Size: {3}, Disk ID: {4}, Offset: {5}, Start Sector: {6}\n", extentIndex, extent.ExtentID, extent.Name, extentSizeString, diskIDString, extentOffsetString, extent.FirstSector); } return(builder.ToString()); }
public static void ListExtents() { if (m_selectedVolume != null) { Console.WriteLine("Extent ## ID Name Size DiskID Offset Start Sector"); Console.WriteLine("--------- ---- --------- ------- ------ ------- ------------"); for (int index = 0; index < m_selectedVolume.Extents.Count; index++) { DiskExtent extent = m_selectedVolume.Extents[index]; string extentNumber = index.ToString().PadLeft(2); ulong extentID = 0; ulong diskID = 0; string name = String.Empty; if (extent is DynamicDiskExtent) { extentID = ((DynamicDiskExtent)extent).ExtentID; name = ((DynamicDiskExtent)extent).Name; if (extent.Disk != null) { VolumeManagerDatabase database = VolumeManagerDatabase.ReadFromDisk(extent.Disk); if (database != null) { ExtentRecord extentRecord = database.FindExtentByExtentID(extentID); diskID = extentRecord.DiskId; } } } string offsetString; if (extent.Disk != null) { long offset = extent.FirstSector * extent.Disk.BytesPerSector; offsetString = GetStandardSizeString(offset); } else { offsetString = " N/A"; } long size = extent.Size; name = name.ToString().PadRight(9); string extentIDString = String.Empty; if (extentID != 0) { extentIDString = extentID.ToString(); } extentIDString = extentIDString.PadLeft(4); string diskIDString = String.Empty; if (diskID != 0) { diskIDString = diskID.ToString(); } diskIDString = diskIDString.PadLeft(6); string startSector = extent.FirstSector.ToString().PadLeft(12); Console.WriteLine("Extent {0} {1} {2} {3} {4} {5} {6}", extentNumber, extentIDString, name, GetStandardSizeString(size), diskIDString, offsetString, startSector); } } else { Console.WriteLine("No volume has been selected"); } }