public override int Parse(byte[] buffer, int offset) { VolumeDescriptorSequenceNumber = Utilities.ToUInt32LittleEndian(buffer, offset + 16); DescriptorCharset = Utilities.ToByteArray(buffer, offset + 20, 64); LogicalVolumeIdentifier = UdfUtilities.ReadDString(buffer, offset + 84, 128); LogicalBlockSize = Utilities.ToUInt32LittleEndian(buffer, offset + 212); DomainIdentifier = Utilities.ToStruct <DomainEntityIdentifier>(buffer, offset + 216); LogicalVolumeContentsUse = Utilities.ToByteArray(buffer, offset + 248, 16); MapTableLength = Utilities.ToUInt32LittleEndian(buffer, offset + 264); NumPartitionMaps = Utilities.ToUInt32LittleEndian(buffer, offset + 268); ImplementationIdentifier = Utilities.ToStruct <ImplementationEntityIdentifier>(buffer, offset + 272); ImplementationUse = Utilities.ToByteArray(buffer, offset + 304, 128); IntegritySequenceExtent = new ExtentDescriptor(); IntegritySequenceExtent.ReadFrom(buffer, offset + 432); int pmOffset = 0; PartitionMaps = new PartitionMap[NumPartitionMaps]; for (int i = 0; i < NumPartitionMaps; ++i) { PartitionMaps[i] = PartitionMap.CreateFrom(buffer, offset + 440 + pmOffset); pmOffset += PartitionMaps[i].Size; } return(440 + (int)MapTableLength); }
public override int Parse(byte[] buffer, int offset) { VolumeDescriptorSequenceNumber = Utilities.ToUInt32LittleEndian(buffer, offset + 16); PrimaryVolumeDescriptorNumber = Utilities.ToUInt32LittleEndian(buffer, offset + 20); VolumeIdentifier = UdfUtilities.ReadDString(buffer, offset + 24, 32); VolumeSequenceNumber = Utilities.ToUInt16LittleEndian(buffer, offset + 56); MaxVolumeSquenceNumber = Utilities.ToUInt16LittleEndian(buffer, offset + 58); InterchangeLevel = Utilities.ToUInt16LittleEndian(buffer, offset + 60); MaxInterchangeLevel = Utilities.ToUInt16LittleEndian(buffer, offset + 62); CharacterSetList = Utilities.ToUInt32LittleEndian(buffer, offset + 64); MaxCharacterSetList = Utilities.ToUInt32LittleEndian(buffer, offset + 68); VolumeSetIdentifier = UdfUtilities.ReadDString(buffer, offset + 72, 128); DescriptorCharSet = Utilities.ToStruct <CharacterSetSpecification>(buffer, offset + 200); ExplanatoryCharSet = Utilities.ToStruct <CharacterSetSpecification>(buffer, offset + 264); VolumeAbstractExtent = new ExtentDescriptor(); VolumeAbstractExtent.ReadFrom(buffer, offset + 328); VolumeCopyrightNoticeExtent = new ExtentDescriptor(); VolumeCopyrightNoticeExtent.ReadFrom(buffer, offset + 336); ApplicationIdentifier = Utilities.ToStruct <ApplicationEntityIdentifier>(buffer, offset + 344); RecordingTime = UdfUtilities.ParseTimestamp(buffer, offset + 376); ImplementationIdentifier = Utilities.ToStruct <ImplementationEntityIdentifier>(buffer, offset + 388); ImplementationUse = Utilities.ToByteArray(buffer, offset + 420, 64); PredecessorVolumeDescriptorSequenceLocation = Utilities.ToUInt32LittleEndian(buffer, offset + 484); Flags = Utilities.ToUInt16LittleEndian(buffer, offset + 488); return(512); }