]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Udf.h
MdePkg: TpmPtp: Add CapCRBIdleBypass definition
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Udf.h
CommitLineData
fae0d2a2
PA
1/** @file\r
2 OSTA Universal Disk Format (UDF) definitions.\r
3\r
4 Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>\r
5\r
6 This program and the accompanying materials are licensed and made available\r
7 under the terms and conditions of the BSD License which accompanies this\r
8 distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
12 WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13**/\r
14\r
15#ifndef __UDF_H__\r
16#define __UDF_H__\r
17\r
18#define UDF_BEA_IDENTIFIER "BEA01"\r
19#define UDF_NSR2_IDENTIFIER "NSR02"\r
20#define UDF_NSR3_IDENTIFIER "NSR03"\r
21#define UDF_TEA_IDENTIFIER "TEA01"\r
22\r
23#define UDF_LOGICAL_SECTOR_SHIFT 11\r
24#define UDF_LOGICAL_SECTOR_SIZE ((UINT64)(1ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
25#define UDF_VRS_START_OFFSET ((UINT64)(16ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
26\r
264d16fc
PA
27typedef enum {\r
28 UdfPrimaryVolumeDescriptor = 1,\r
29 UdfAnchorVolumeDescriptorPointer = 2,\r
30 UdfVolumeDescriptorPointer = 3,\r
31 UdfImplemenationUseVolumeDescriptor = 4,\r
32 UdfPartitionDescriptor = 5,\r
33 UdfLogicalVolumeDescriptor = 6,\r
34 UdfUnallocatedSpaceDescriptor = 7,\r
35 UdfTerminatingDescriptor = 8,\r
36 UdfLogicalVolumeIntegrityDescriptor = 9,\r
37 UdfFileSetDescriptor = 256,\r
38 UdfFileIdentifierDescriptor = 257,\r
39 UdfAllocationExtentDescriptor = 258,\r
40 UdfFileEntry = 261,\r
41 UdfExtendedFileEntry = 266,\r
42} UDF_VOLUME_DESCRIPTOR_ID;\r
fae0d2a2
PA
43\r
44#pragma pack(1)\r
45\r
46typedef struct {\r
47 UINT16 TagIdentifier;\r
48 UINT16 DescriptorVersion;\r
49 UINT8 TagChecksum;\r
50 UINT8 Reserved;\r
51 UINT16 TagSerialNumber;\r
52 UINT16 DescriptorCRC;\r
53 UINT16 DescriptorCRCLength;\r
54 UINT32 TagLocation;\r
55} UDF_DESCRIPTOR_TAG;\r
56\r
57typedef struct {\r
58 UINT32 ExtentLength;\r
59 UINT32 ExtentLocation;\r
60} UDF_EXTENT_AD;\r
61\r
264d16fc
PA
62typedef struct {\r
63 UINT8 CharacterSetType;\r
64 UINT8 CharacterSetInfo[63];\r
65} UDF_CHAR_SPEC;\r
66\r
67typedef struct {\r
68 UINT8 Flags;\r
69 UINT8 Identifier[23];\r
70 union {\r
71 //\r
72 // Domain Entity Identifier\r
73 //\r
74 struct {\r
75 UINT16 UdfRevision;\r
76 UINT8 DomainFlags;\r
77 UINT8 Reserved[5];\r
78 } Domain;\r
79 //\r
80 // UDF Entity Identifier\r
81 //\r
82 struct {\r
83 UINT16 UdfRevision;\r
84 UINT8 OSClass;\r
85 UINT8 OSIdentifier;\r
86 UINT8 Reserved[4];\r
87 } Entity;\r
88 //\r
89 // Implementation Entity Identifier\r
90 //\r
91 struct {\r
92 UINT8 OSClass;\r
93 UINT8 OSIdentifier;\r
94 UINT8 ImplementationUseArea[6];\r
95 } ImplementationEntity;\r
96 //\r
97 // Application Entity Identifier\r
98 //\r
99 struct {\r
100 UINT8 ApplicationUseArea[8];\r
101 } ApplicationEntity;\r
102 //\r
103 // Raw Identifier Suffix\r
104 //\r
105 struct {\r
106 UINT8 Data[8];\r
107 } Raw;\r
108 } Suffix;\r
109} UDF_ENTITY_ID;\r
110\r
111typedef struct {\r
112 UINT32 LogicalBlockNumber;\r
113 UINT16 PartitionReferenceNumber;\r
114} UDF_LB_ADDR;\r
115\r
116typedef struct {\r
117 UINT32 ExtentLength;\r
118 UDF_LB_ADDR ExtentLocation;\r
119 UINT8 ImplementationUse[6];\r
120} UDF_LONG_ALLOCATION_DESCRIPTOR;\r
121\r
fae0d2a2
PA
122typedef struct {\r
123 UDF_DESCRIPTOR_TAG DescriptorTag;\r
124 UDF_EXTENT_AD MainVolumeDescriptorSequenceExtent;\r
125 UDF_EXTENT_AD ReserveVolumeDescriptorSequenceExtent;\r
126 UINT8 Reserved[480];\r
127} UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER;\r
128\r
264d16fc
PA
129typedef struct {\r
130 UDF_DESCRIPTOR_TAG DescriptorTag;\r
131 UINT32 VolumeDescriptorSequenceNumber;\r
132 UDF_CHAR_SPEC DescriptorCharacterSet;\r
133 UINT8 LogicalVolumeIdentifier[128];\r
134 UINT32 LogicalBlockSize;\r
135 UDF_ENTITY_ID DomainIdentifier;\r
136 UDF_LONG_ALLOCATION_DESCRIPTOR LogicalVolumeContentsUse;\r
137 UINT32 MapTableLength;\r
138 UINT32 NumberOfPartitionMaps;\r
139 UDF_ENTITY_ID ImplementationIdentifier;\r
140 UINT8 ImplementationUse[128];\r
141 UDF_EXTENT_AD IntegritySequenceExtent;\r
142 UINT8 PartitionMaps[6];\r
143} UDF_LOGICAL_VOLUME_DESCRIPTOR;\r
144\r
fae0d2a2
PA
145#pragma pack()\r
146\r
147#endif\r