public static void Detect() { int num = 1; for (int i = 0; i < BlockDevice.Devices.Count; i++) { if (BlockDevice.Devices[i] is AtaPio) { AtaPio ataPio = (AtaPio)BlockDevice.Devices[i]; ataPio.ReadBlock(0uL, 2u, ATA.a.Data); Devices.device device = new Devices.device(); device.name = "/dev/sd" + ATA.b.ToString(); device.dev = ataPio; Devices.dev.Add(device); ATA.b += '\u0001'; } else { if (BlockDevice.Devices[i] is Partition) { Partition dev = BlockDevice.Devices[i] as Partition; Devices.device device = new Devices.device(); device.name = "/dev/sda" + num.ToString(); device.dev = dev; num++; Devices.dev.Add(device); } } } }
public static void ReadMBR(AtaPio dev) { BinaryReader binaryReader = new BinaryReader(ATA.a); for (int i = 0; i < 4; i++) { binaryReader.BaseStream.Position = 446 + i * 16 + 8; uint num = binaryReader.ReadUInt32(); uint num2 = binaryReader.ReadUInt32(); if (num2 != 0u) { Partition dev2 = new Partition(dev, (ulong)num, (ulong)num2); Devices.device device = new Devices.device(); device.dev = dev2; device.name = "/dev/sd" + ATA.b.ToString() + (i + 1).ToString(); Devices.dev.Add(device); } } }
public override byte[] readFile(string name) { Devices.device device = new Devices.device(); for (int i = 0; i < Devices.dev.Count; i++) { int num = Util.LastIndexOf(Devices.dev[i].name, this.Seperator); if (Devices.dev[i].name.Substring(num + 1) == Util.cleanName(name)) { byte[] array = new byte[Devices.dev[i].dev.get_BlockCount() * Devices.dev[i].dev.get_BlockSize()]; byte[] array2 = new byte[Devices.dev[i].dev.get_BlockSize()]; for (int j = 0; j < (int)((uint)Devices.dev[i].dev.get_BlockCount()); j++) { Devices.dev[i].dev.ReadBlock((ulong)((long)j), 1u, array2); for (int k = 0; k < (int)((uint)Devices.dev[i].dev.get_BlockSize()); k++) { array[j * (int)((uint)Devices.dev[i].dev.get_BlockSize()) + k] = array2[k]; } } return array; } } throw new Exception("File not found!"); }