Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }