1/** @file 2 EFI Guid Partition Table Format Definition. 3 4Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 5This program and the accompanying materials are licensed and made available under 6the terms and conditions of the BSD License that accompanies this distribution. 7The full text of the license may be found at 8http://opensource.org/licenses/bsd-license.php. 9 10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13**/ 14 15#ifndef __UEFI_GPT_H__ 16#define __UEFI_GPT_H__ 17 18/// 19/// The primary GUID Partition Table Header must be 20/// located in LBA 1 (i.e., the second logical block). 21/// 22#define PRIMARY_PART_HEADER_LBA 1 23/// 24/// EFI Partition Table Signature: "EFI PART". 25/// 26#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T') 27 28#pragma pack(1) 29 30/// 31/// GPT Partition Table Header. 32/// 33typedef struct { 34 /// 35 /// The table header for the GPT partition Table. 36 /// This header contains EFI_PTAB_HEADER_ID. 37 /// 38 EFI_TABLE_HEADER Header; 39 /// 40 /// The LBA that contains this data structure. 41 /// 42 EFI_LBA MyLBA; 43 /// 44 /// LBA address of the alternate GUID Partition Table Header. 45 /// 46 EFI_LBA AlternateLBA; 47 /// 48 /// The first usable logical block that may be used 49 /// by a partition described by a GUID Partition Entry. 50 /// 51 EFI_LBA FirstUsableLBA; 52 /// 53 /// The last usable logical block that may be used 54 /// by a partition described by a GUID Partition Entry. 55 /// 56 EFI_LBA LastUsableLBA; 57 /// 58 /// GUID that can be used to uniquely identify the disk. 59 /// 60 EFI_GUID DiskGUID; 61 /// 62 /// The starting LBA of the GUID Partition Entry array. 63 /// 64 EFI_LBA PartitionEntryLBA; 65 /// 66 /// The number of Partition Entries in the GUID Partition Entry array. 67 /// 68 UINT32 NumberOfPartitionEntries; 69 /// 70 /// The size, in bytes, of each the GUID Partition 71 /// Entry structures in the GUID Partition Entry 72 /// array. This field shall be set to a value of 128 x 2^n where n is 73 /// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.). 74 /// 75 UINT32 SizeOfPartitionEntry; 76 /// 77 /// The CRC32 of the GUID Partition Entry array. 78 /// Starts at PartitionEntryLBA and is 79 /// computed over a byte length of 80 /// NumberOfPartitionEntries * SizeOfPartitionEntry. 81 /// 82 UINT32 PartitionEntryArrayCRC32; 83} EFI_PARTITION_TABLE_HEADER; 84 85/// 86/// GPT Partition Entry. 87/// 88typedef struct { 89 /// 90 /// Unique ID that defines the purpose and type of this Partition. A value of 91 /// zero defines that this partition entry is not being used. 92 /// 93 EFI_GUID PartitionTypeGUID; 94 /// 95 /// GUID that is unique for every partition entry. Every partition ever 96 /// created will have a unique GUID. 97 /// This GUID must be assigned when the GUID Partition Entry is created. 98 /// 99 EFI_GUID UniquePartitionGUID; 100 /// 101 /// Starting LBA of the partition defined by this entry 102 /// 103 EFI_LBA StartingLBA; 104 /// 105 /// Ending LBA of the partition defined by this entry. 106 /// 107 EFI_LBA EndingLBA; 108 /// 109 /// Attribute bits, all bits reserved by UEFI 110 /// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the 111 /// partition indicates that deletion or modification of the contents can result in loss of platform 112 /// features or failure for the platform to boot or operate. The system cannot function normally if 113 /// this partition is removed, and it should be considered part of the hardware of the system. 114 /// Actions such as running diagnostics, system recovery, or even OS install or boot, could 115 /// potentially stop working if this partition is removed. Unless OS software or firmware 116 /// recognizes this partition, it should never be removed or modified as the UEFI firmware or 117 /// platform hardware may become non-functional. 118 /// Bit 1: If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for 119 /// this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system 120 /// mappings will not be created for this partition in UEFI. 121 /// Bit 2: This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations 122 /// inform certain limited, special-purpose software running on these systems that a GPT 123 /// partition may be bootable. The UEFI boot manager must ignore this bit when selecting 124 /// a UEFI-compliant application, e.g., an OS loader. 125 /// Bits 3-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI 126 /// specification. 127 /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the 128 /// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed 129 /// to modify these bits. They must be preserved if Bits 0-47 are modified.. 130 /// 131 UINT64 Attributes; 132 /// 133 /// Null-terminated name of the partition. 134 /// 135 CHAR16 PartitionName[36]; 136} EFI_PARTITION_ENTRY; 137 138#pragma pack() 139#endif 140 141 142