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));
                }
            }