Example #1
0
        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);
        }
Example #2
0
            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);
                }
            }