private Dictionary <string, PhysicalVolumeInfo> ScanForPhysicalVolumes() { Dictionary <string, PhysicalVolumeInfo> result = new Dictionary <string, PhysicalVolumeInfo>(); // First scan physical volumes for (int i = 0; i < _disks.Count; ++i) { VirtualDisk disk = _disks[i]; string diskId = GetDiskId(i); if (PartitionTable.IsPartitioned(disk.Content)) { foreach (var table in PartitionTable.GetPartitionTables(disk.Content)) { foreach (var part in table.Partitions) { PhysicalVolumeInfo pvi = new PhysicalVolumeInfo(diskId, disk, part); result.Add(pvi.Identity, pvi); } } } else { PhysicalVolumeInfo pvi = new PhysicalVolumeInfo(diskId, disk); result.Add(pvi.Identity, pvi); } } return(result); }
private void LoadHDI(string filename, bool isOriginal) { var disk = new Disk(filename); var pt = PartitionTable.GetPartitionTables(disk); var p = pt[0].Partitions[0]; var fs = new FatFileSystem(p.Open()); ListView loader; var checkedFiles = new Dictionary <string, bool>(); if (isOriginal) { originalDisk = disk; _patchBuilder.originalFs = fs; loader = lvItems; } else { translatedDisk = disk; _patchBuilder.translatedFs = fs; loader = lvTranslatedItems; foreach (ListViewItem item in lvItems.CheckedItems) { checkedFiles.Add(item.Name, true); } } var files = fs.GetFiles(@"\"); var dirs = fs.GetDirectories(@"\"); foreach (var dir in dirs) { var item = new ListViewItem { Name = dir, Text = dir.Replace("\\", ""), ImageIndex = 0 }; if (checkedFiles.ContainsKey(dir)) { item.Checked = true; } loader.Items.Add(item); } foreach (var file in files) { var item = new ListViewItem { Name = file, Text = file.TrimStart('\\'), ImageIndex = 1 }; if (checkedFiles.ContainsKey(file)) { item.Checked = true; } if (_patchBuilder.IsSysFile(item.Text)) { item.Tag = "sys"; item.BackColor = Color.LightGray; item.ForeColor = Color.Gray; } else if (item.Text == "AUTOEXEC.BAT" || item.Text == "CONFIG.SYS") { item.Tag = "always"; item.Checked = true; item.BackColor = Color.LightGray; item.ForeColor = Color.Gray; } else { item.Tag = "ord"; } loader.Items.Add(item); } loader.Refresh(); }