#define UDF_LOGICAL_SECTOR_SIZE ((UINT64)(1ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
#define UDF_VRS_START_OFFSET ((UINT64)(16ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
\r
-#define _GET_TAG_ID(_Pointer) \\r
- (((UDF_DESCRIPTOR_TAG *)(_Pointer))->TagIdentifier)\r
-\r
-#define IS_AVDP(_Pointer) \\r
- ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 2))\r
+typedef enum {\r
+ UdfPrimaryVolumeDescriptor = 1,\r
+ UdfAnchorVolumeDescriptorPointer = 2,\r
+ UdfVolumeDescriptorPointer = 3,\r
+ UdfImplemenationUseVolumeDescriptor = 4,\r
+ UdfPartitionDescriptor = 5,\r
+ UdfLogicalVolumeDescriptor = 6,\r
+ UdfUnallocatedSpaceDescriptor = 7,\r
+ UdfTerminatingDescriptor = 8,\r
+ UdfLogicalVolumeIntegrityDescriptor = 9,\r
+ UdfFileSetDescriptor = 256,\r
+ UdfFileIdentifierDescriptor = 257,\r
+ UdfAllocationExtentDescriptor = 258,\r
+ UdfFileEntry = 261,\r
+ UdfExtendedFileEntry = 266,\r
+} UDF_VOLUME_DESCRIPTOR_ID;\r
\r
#pragma pack(1)\r
\r
UINT32 ExtentLocation;\r
} UDF_EXTENT_AD;\r
\r
+typedef struct {\r
+ UINT8 CharacterSetType;\r
+ UINT8 CharacterSetInfo[63];\r
+} UDF_CHAR_SPEC;\r
+\r
+typedef struct {\r
+ UINT8 Flags;\r
+ UINT8 Identifier[23];\r
+ union {\r
+ //\r
+ // Domain Entity Identifier\r
+ //\r
+ struct {\r
+ UINT16 UdfRevision;\r
+ UINT8 DomainFlags;\r
+ UINT8 Reserved[5];\r
+ } Domain;\r
+ //\r
+ // UDF Entity Identifier\r
+ //\r
+ struct {\r
+ UINT16 UdfRevision;\r
+ UINT8 OSClass;\r
+ UINT8 OSIdentifier;\r
+ UINT8 Reserved[4];\r
+ } Entity;\r
+ //\r
+ // Implementation Entity Identifier\r
+ //\r
+ struct {\r
+ UINT8 OSClass;\r
+ UINT8 OSIdentifier;\r
+ UINT8 ImplementationUseArea[6];\r
+ } ImplementationEntity;\r
+ //\r
+ // Application Entity Identifier\r
+ //\r
+ struct {\r
+ UINT8 ApplicationUseArea[8];\r
+ } ApplicationEntity;\r
+ //\r
+ // Raw Identifier Suffix\r
+ //\r
+ struct {\r
+ UINT8 Data[8];\r
+ } Raw;\r
+ } Suffix;\r
+} UDF_ENTITY_ID;\r
+\r
+typedef struct {\r
+ UINT32 LogicalBlockNumber;\r
+ UINT16 PartitionReferenceNumber;\r
+} UDF_LB_ADDR;\r
+\r
+typedef struct {\r
+ UINT32 ExtentLength;\r
+ UDF_LB_ADDR ExtentLocation;\r
+ UINT8 ImplementationUse[6];\r
+} UDF_LONG_ALLOCATION_DESCRIPTOR;\r
+\r
typedef struct {\r
UDF_DESCRIPTOR_TAG DescriptorTag;\r
UDF_EXTENT_AD MainVolumeDescriptorSequenceExtent;\r
UINT8 Reserved[480];\r
} UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER;\r
\r
+typedef struct {\r
+ UDF_DESCRIPTOR_TAG DescriptorTag;\r
+ UINT32 VolumeDescriptorSequenceNumber;\r
+ UDF_CHAR_SPEC DescriptorCharacterSet;\r
+ UINT8 LogicalVolumeIdentifier[128];\r
+ UINT32 LogicalBlockSize;\r
+ UDF_ENTITY_ID DomainIdentifier;\r
+ UDF_LONG_ALLOCATION_DESCRIPTOR LogicalVolumeContentsUse;\r
+ UINT32 MapTableLength;\r
+ UINT32 NumberOfPartitionMaps;\r
+ UDF_ENTITY_ID ImplementationIdentifier;\r
+ UINT8 ImplementationUse[128];\r
+ UDF_EXTENT_AD IntegritySequenceExtent;\r
+ UINT8 PartitionMaps[6];\r
+} UDF_LOGICAL_VOLUME_DESCRIPTOR;\r
+\r
#pragma pack()\r
\r
#endif\r