-/* @file\r
+/** @file\r
EFI Guid Partition Table Format Definition.\r
\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this 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,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- Module Name: UefiGpt.h\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef __UEFI_GPT_H__\r
#define __UEFI_GPT_H__\r
\r
+///\r
+/// The primary GUID Partition Table Header must be\r
+/// located in LBA 1 (i.e., the second logical block).\r
+///\r
#define PRIMARY_PART_HEADER_LBA 1\r
-\r
-//\r
-// EFI Partition Table Signature: "EFI PART"\r
-// \r
-#define EFI_PTAB_HEADER_ID 0x5452415020494645ULL\r
+///\r
+/// EFI Partition Table Signature: "EFI PART".\r
+///\r
+#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T')\r
+///\r
+/// Minimum bytes reserve for EFI entry array buffer.\r
+///\r
+#define EFI_GPT_PART_ENTRY_MIN_SIZE 16384\r
\r
#pragma pack(1)\r
-//\r
-// GPT Partition Table Header\r
-//\r
+\r
+///\r
+/// GPT Partition Table Header.\r
+///\r
typedef struct {\r
+ ///\r
+ /// The table header for the GPT partition Table.\r
+ /// This header contains EFI_PTAB_HEADER_ID.\r
+ ///\r
EFI_TABLE_HEADER Header;\r
+ ///\r
+ /// The LBA that contains this data structure.\r
+ ///\r
EFI_LBA MyLBA;\r
+ ///\r
+ /// LBA address of the alternate GUID Partition Table Header.\r
+ ///\r
EFI_LBA AlternateLBA;\r
+ ///\r
+ /// The first usable logical block that may be used\r
+ /// by a partition described by a GUID Partition Entry.\r
+ ///\r
EFI_LBA FirstUsableLBA;\r
+ ///\r
+ /// The last usable logical block that may be used\r
+ /// by a partition described by a GUID Partition Entry.\r
+ ///\r
EFI_LBA LastUsableLBA;\r
+ ///\r
+ /// GUID that can be used to uniquely identify the disk.\r
+ ///\r
EFI_GUID DiskGUID;\r
+ ///\r
+ /// The starting LBA of the GUID Partition Entry array.\r
+ ///\r
EFI_LBA PartitionEntryLBA;\r
+ ///\r
+ /// The number of Partition Entries in the GUID Partition Entry array.\r
+ ///\r
UINT32 NumberOfPartitionEntries;\r
+ ///\r
+ /// The size, in bytes, of each the GUID Partition\r
+ /// Entry structures in the GUID Partition Entry\r
+ /// array. This field shall be set to a value of 128 x 2^n where n is\r
+ /// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.).\r
+ ///\r
UINT32 SizeOfPartitionEntry;\r
+ ///\r
+ /// The CRC32 of the GUID Partition Entry array.\r
+ /// Starts at PartitionEntryLBA and is\r
+ /// computed over a byte length of\r
+ /// NumberOfPartitionEntries * SizeOfPartitionEntry.\r
+ ///\r
UINT32 PartitionEntryArrayCRC32;\r
} EFI_PARTITION_TABLE_HEADER;\r
\r
-//\r
-// GPT Partition Entry\r
-//\r
+///\r
+/// GPT Partition Entry.\r
+///\r
typedef struct {\r
+ ///\r
+ /// Unique ID that defines the purpose and type of this Partition. A value of\r
+ /// zero defines that this partition entry is not being used.\r
+ ///\r
EFI_GUID PartitionTypeGUID;\r
+ ///\r
+ /// GUID that is unique for every partition entry. Every partition ever\r
+ /// created will have a unique GUID.\r
+ /// This GUID must be assigned when the GUID Partition Entry is created.\r
+ ///\r
EFI_GUID UniquePartitionGUID;\r
+ ///\r
+ /// Starting LBA of the partition defined by this entry\r
+ ///\r
EFI_LBA StartingLBA;\r
+ ///\r
+ /// Ending LBA of the partition defined by this entry.\r
+ ///\r
EFI_LBA EndingLBA;\r
+ ///\r
+ /// Attribute bits, all bits reserved by UEFI\r
+ /// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the\r
+ /// partition indicates that deletion or modification of the contents can result in loss of platform\r
+ /// features or failure for the platform to boot or operate. The system cannot function normally if\r
+ /// this partition is removed, and it should be considered part of the hardware of the system.\r
+ /// Actions such as running diagnostics, system recovery, or even OS install or boot, could\r
+ /// potentially stop working if this partition is removed. Unless OS software or firmware\r
+ /// recognizes this partition, it should never be removed or modified as the UEFI firmware or\r
+ /// platform hardware may become non-functional.\r
+ /// Bit 1: If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for\r
+ /// this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system\r
+ /// mappings will not be created for this partition in UEFI.\r
+ /// Bit 2: This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations\r
+ /// inform certain limited, special-purpose software running on these systems that a GPT\r
+ /// partition may be bootable. The UEFI boot manager must ignore this bit when selecting\r
+ /// a UEFI-compliant application, e.g., an OS loader.\r
+ /// Bits 3-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI\r
+ /// specification.\r
+ /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the\r
+ /// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed\r
+ /// to modify these bits. They must be preserved if Bits 0-47 are modified..\r
+ ///\r
UINT64 Attributes;\r
+ ///\r
+ /// Null-terminated name of the partition.\r
+ ///\r
CHAR16 PartitionName[36];\r
} EFI_PARTITION_ENTRY;\r
\r
-//\r
-// GPT Partition Entry Status\r
-//\r
-typedef struct {\r
- BOOLEAN OutOfRange;\r
- BOOLEAN Overlap;\r
-} EFI_PARTITION_ENTRY_STATUS;\r
-\r
#pragma pack()\r
#endif\r
\r