using System.Collections.Generic; namespace SabreTools.Data.Models.UDF { /// /// A volume (or disc image) with a UDF / ECMA-167 file system /// /// /// Logical sectors and logical blocks are 2048 bytes on optical media /// File system structures are addressed by logical block address (partition reference number + logical block); /// dictionaries are keyed by ((long)PartitionReferenceNumber << 32) | LogicalBlockNumber /// /// /// public sealed class Volume { /// /// Volume Recognition Sequence starting at sector 16 /// public VolumeStructureDescriptor[] VolumeRecognitionSequence { get; set; } = []; /// /// Anchor Volume Descriptor Pointer /// public AnchorVolumeDescriptorPointer? AnchorVolumeDescriptorPointer { get; set; } /// /// Volume Descriptor Sequence (Primary, Partition, Logical Volume, ... up to the Terminating Descriptor) /// public Descriptor[] VolumeDescriptorSequence { get; set; } = []; /// /// File Set Descriptor /// public FileSetDescriptor? FileSetDescriptor { get; set; } /// /// File Entries (and Extended File Entries) by logical block address /// public Dictionary FileEntries { get; set; } = []; /// /// Allocation Extent Descriptors by logical block address /// public Dictionary AllocationExtentDescriptors { get; set; } = []; /// /// File Identifier Descriptors of each directory, by logical block address of the directory's File Entry /// public Dictionary Directories { get; set; } = []; } }