--- /dev/null
+/** @file\r
+ OSTA Universal Disk Format (UDF) definitions.\r
+\r
+ Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>\r
+\r
+ This program and the accompanying materials are licensed and made available\r
+ under the terms and conditions of the BSD License which accompanies this\r
+ distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+#ifndef __UDF_H__\r
+#define __UDF_H__\r
+\r
+#define UDF_BEA_IDENTIFIER "BEA01"\r
+#define UDF_NSR2_IDENTIFIER "NSR02"\r
+#define UDF_NSR3_IDENTIFIER "NSR03"\r
+#define UDF_TEA_IDENTIFIER "TEA01"\r
+\r
+#define UDF_LOGICAL_SECTOR_SHIFT 11\r
+#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
+\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+ UINT16 TagIdentifier;\r
+ UINT16 DescriptorVersion;\r
+ UINT8 TagChecksum;\r
+ UINT8 Reserved;\r
+ UINT16 TagSerialNumber;\r
+ UINT16 DescriptorCRC;\r
+ UINT16 DescriptorCRCLength;\r
+ UINT32 TagLocation;\r
+} UDF_DESCRIPTOR_TAG;\r
+\r
+typedef struct {\r
+ UINT32 ExtentLength;\r
+ UINT32 ExtentLocation;\r
+} UDF_EXTENT_AD;\r
+\r
+typedef struct {\r
+ UDF_DESCRIPTOR_TAG DescriptorTag;\r
+ UDF_EXTENT_AD MainVolumeDescriptorSequenceExtent;\r
+ UDF_EXTENT_AD ReserveVolumeDescriptorSequenceExtent;\r
+ UINT8 Reserved[480];\r
+} UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER;\r
+\r
+#pragma pack()\r
+\r
+#endif\r