public EraseConfirmationForm(DeviceEnumerator.DeviceInfo info, DiskDevice dev, long volumeSize) { InitializeComponent(); this.info = info; lblDevName.Text = info.UserFriendlyName; lblDevSize.Text = StringHelpers.FormatByteCount(volumeSize) + "B"; var num = dev.QueryDeviceNumber(); if (num == null) lblInternalName.Text = "Unknown"; else lblInternalName.Text = string.Format(@"\\.\PHYSICALDRIVE{0}", num.DeviceNumber); Dictionary<int, string> volumesByPartitionNumbers = null; try { if (num != null) volumesByPartitionNumbers = VolumeManager.GetVolumesForPhysicalDisk(num.DeviceNumber); } catch { } var layout = dev.QueryLayoutInformation(); if (layout != null) for (int i = 0; i < layout.PartitionCount; i++ ) { if (layout.PartitionEntry[i].PartitionType == 0) continue; ListViewItem lvi = new ListViewItem((i + 1).ToString()); lvi.SubItems.Add(StringHelpers.FormatByteCount(layout.PartitionEntry[i].StartingOffset) + "B"); lvi.SubItems.Add(StringHelpers.FormatByteCount(layout.PartitionEntry[i].PartitionLength) + "B"); lvi.SubItems.Add(MapPartitionType(layout.PartitionEntry[i].PartitionType)); string volID; bool found = false; if (volumesByPartitionNumbers != null && volumesByPartitionNumbers.TryGetValue(layout.PartitionEntry[i].PartitionNumber, out volID)) { volumesByPartitionNumbers.Remove(layout.PartitionEntry[i].PartitionNumber); string mountPoints = VolumeManager.GetVolumeMountPoints(volID, '|'); if (mountPoints != null) { lvi.Tag = mountPoints.Split('|')[0]; lvi.SubItems.Add(mountPoints.Replace("|", "; ")); found = mountPoints.Length > 0; } } lvi.ImageIndex = found ? 0 : 1; lvPartitions.Items.Add(lvi); } }
public EraseConfirmationForm(DeviceEnumerator.DeviceInfo info, DiskDevice dev, long volumeSize) { InitializeComponent(); this.info = info; lblDevName.Text = info.UserFriendlyName; lblDevSize.Text = StringHelpers.FormatByteCount(volumeSize) + "B"; var num = dev.QueryDeviceNumber(); if (num == null) { lblInternalName.Text = "Unknown"; } else { lblInternalName.Text = num.PhysicalDrive; } Dictionary <int, string> volumesByPartitionNumbers = null; try { if (num != null) { volumesByPartitionNumbers = VolumeManager.GetVolumesForPhysicalDisk(num.DeviceNumber); } } catch { } var layout = dev.QueryLayoutInformation(); if (layout != null) { for (int i = 0; i < layout.PartitionCount; i++) { if (layout.PartitionEntry[i].PartitionType == 0) { continue; } ListViewItem lvi = new ListViewItem((i + 1).ToString()); lvi.SubItems.Add(StringHelpers.FormatByteCount(layout.PartitionEntry[i].StartingOffset) + "B"); lvi.SubItems.Add(StringHelpers.FormatByteCount(layout.PartitionEntry[i].PartitionLength) + "B"); lvi.SubItems.Add(MapPartitionType(layout.PartitionEntry[i].PartitionType)); string volID; bool found = false; if (volumesByPartitionNumbers != null && volumesByPartitionNumbers.TryGetValue(layout.PartitionEntry[i].PartitionNumber, out volID)) { volumesByPartitionNumbers.Remove(layout.PartitionEntry[i].PartitionNumber); string mountPoints = VolumeManager.GetVolumeMountPoints(volID, '|'); if (mountPoints != null) { lvi.Tag = mountPoints.Split('|')[0]; lvi.SubItems.Add(mountPoints.Replace("|", "; ")); found = mountPoints.Length > 0; } } lvi.ImageIndex = found ? 0 : 1; lvPartitions.Items.Add(lvi); } } }