public ISO9660(Hardware.Devices.DiskDevice disk) { byte[] data = disk.NewBlockArray(1); VolumeDescriptor desciptor = null; uint sector = 0x10; do { disk.ReadBlock(sector, 1, data); desciptor = VolumeDescriptor.CreateDescriptor(disk, sector, 1); VolumeDescriptors.Add(desciptor); sector++; }while (desciptor.Code != VolumeDescriptor.TypeCodes.SetTerminator); }
public static VolumeDescriptor CreateDescriptor(Hardware.Devices.DiskDevice disk, uint startBlock, uint numBlocks) { byte[] data = disk.NewBlockArray(numBlocks); disk.ReadBlock(startBlock, numBlocks, data); switch ((TypeCodes)data[0]) { case TypeCodes.BootRecord: return(new BootRecord(disk, startBlock, numBlocks, data)); case TypeCodes.Primary: return(new PrimaryVolumeDescriptor(disk, startBlock, numBlocks, data)); case TypeCodes.SetTerminator: return(new SetTerminatorVolumeDescriptor(disk, startBlock, numBlocks, data)); default: return(new VolumeDescriptor(disk, startBlock, numBlocks, data)); } }