ReactOS
0.4.16-dev-2610-ge2c92c0
part_gpt.h
Go to the documentation of this file.
1
/*
2
* PROJECT: FreeLoader
3
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4
* PURPOSE: GPT partitioning scheme support
5
* COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6
*/
7
8
#pragma once
9
10
/* GPT (GUID Partition Table) definitions */
11
#define EFI_PARTITION_HEADER_SIGNATURE "EFI PART"
12
#define EFI_HEADER_LOCATION 1ULL
13
#define EFI_TABLE_REVISION 0x00010000
14
#define EFI_PARTITION_ENTRIES_BLOCK 2ULL
15
#define EFI_PARTITION_ENTRY_COUNT 128
16
#define EFI_PARTITION_ENTRY_SIZE 128
17
#define EFI_PARTITION_NAME_LENGTH 36
18
19
/* GPT Partition Type GUIDs */
20
#define EFI_PART_TYPE_UNUSED_GUID \
21
{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}
22
23
#define EFI_PART_TYPE_EFI_SYSTEM_PART_GUID \
24
{0xc12a7328, 0xf81f, 0x11d2, {0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b}}
25
26
#ifndef PARTITION_GPT
27
#define PARTITION_GPT 0xEE
// GPT protective partition
28
#endif
29
30
#include <pshpack1.h>
31
32
/* GPT Table Header */
33
typedef
struct
_GPT_TABLE_HEADER
34
{
35
CHAR
Signature
[8];
/* "EFI PART" */
36
UINT32
Revision
;
/* 0x00010000 */
37
UINT32
HeaderSize
;
/* Size of header (usually 92) */
38
UINT32
HeaderCrc32
;
/* CRC32 of header */
39
UINT32
Reserved
;
/* Must be 0 */
40
UINT64
MyLba
;
/* LBA of this header */
41
UINT64
AlternateLba
;
/* LBA of alternate header */
42
UINT64
FirstUsableLba
;
/* First usable LBA for partitions */
43
UINT64
LastUsableLba
;
/* Last usable LBA for partitions */
44
GUID
DiskGuid
;
/* Disk GUID */
45
UINT64
PartitionEntryLba
;
/* LBA of partition entries array */
46
UINT32
NumberOfPartitionEntries
;
/* Number of partition entries */
47
UINT32
SizeOfPartitionEntry
;
/* Size of each entry (usually 128) */
48
UINT32
PartitionEntryArrayCrc32
;
/* CRC32 of partition entries array */
49
}
GPT_TABLE_HEADER
, *
PGPT_TABLE_HEADER
;
50
C_ASSERT
(
sizeof
(
GPT_TABLE_HEADER
) == 92);
51
52
/* GPT Partition Entry */
53
typedef
struct
_GPT_PARTITION_ENTRY
54
{
55
GUID
PartitionTypeGuid
;
/* Partition type GUID */
56
GUID
UniquePartitionGuid
;
/* Unique partition GUID */
57
UINT64
StartingLba
;
/* Starting LBA */
58
UINT64
EndingLba
;
/* Ending LBA */
59
UINT64
Attributes
;
/* Partition attributes */
60
WCHAR
PartitionName
[
EFI_PARTITION_NAME_LENGTH
];
/* Partition name (UTF-16) */
61
}
GPT_PARTITION_ENTRY
, *
PGPT_PARTITION_ENTRY
;
62
C_ASSERT
(
sizeof
(
GPT_PARTITION_ENTRY
) == 128);
63
64
#include <poppack.h>
UINT64
COMPILER_DEPENDENT_UINT64 UINT64
Definition:
actypes.h:131
GUID
Definition:
shobjidl.idl:3021
C_ASSERT
#define C_ASSERT(e)
Definition:
intsafe.h:73
EFI_PARTITION_NAME_LENGTH
#define EFI_PARTITION_NAME_LENGTH
Definition:
part_gpt.h:17
GPT_PARTITION_ENTRY
struct _GPT_PARTITION_ENTRY GPT_PARTITION_ENTRY
GPT_TABLE_HEADER
struct _GPT_TABLE_HEADER GPT_TABLE_HEADER
PGPT_TABLE_HEADER
struct _GPT_TABLE_HEADER * PGPT_TABLE_HEADER
PGPT_PARTITION_ENTRY
struct _GPT_PARTITION_ENTRY * PGPT_PARTITION_ENTRY
WCHAR
short WCHAR
Definition:
pedump.c:58
CHAR
char CHAR
Definition:
pedump.c:57
_GPT_PARTITION_ENTRY
Definition:
part_gpt.h:54
_GPT_PARTITION_ENTRY::EndingLba
UINT64 EndingLba
Definition:
part_gpt.h:58
_GPT_PARTITION_ENTRY::UniquePartitionGuid
GUID UniquePartitionGuid
Definition:
part_gpt.h:56
_GPT_PARTITION_ENTRY::Attributes
UINT64 Attributes
Definition:
part_gpt.h:59
_GPT_PARTITION_ENTRY::StartingLba
UINT64 StartingLba
Definition:
part_gpt.h:57
_GPT_PARTITION_ENTRY::PartitionTypeGuid
GUID PartitionTypeGuid
Definition:
part_gpt.h:55
_GPT_PARTITION_ENTRY::PartitionName
WCHAR PartitionName[EFI_PARTITION_NAME_LENGTH]
Definition:
part_gpt.h:60
_GPT_TABLE_HEADER
Definition:
part_gpt.h:34
_GPT_TABLE_HEADER::FirstUsableLba
UINT64 FirstUsableLba
Definition:
part_gpt.h:42
_GPT_TABLE_HEADER::DiskGuid
GUID DiskGuid
Definition:
part_gpt.h:44
_GPT_TABLE_HEADER::LastUsableLba
UINT64 LastUsableLba
Definition:
part_gpt.h:43
_GPT_TABLE_HEADER::Revision
UINT32 Revision
Definition:
part_gpt.h:36
_GPT_TABLE_HEADER::NumberOfPartitionEntries
UINT32 NumberOfPartitionEntries
Definition:
part_gpt.h:46
_GPT_TABLE_HEADER::SizeOfPartitionEntry
UINT32 SizeOfPartitionEntry
Definition:
part_gpt.h:47
_GPT_TABLE_HEADER::HeaderSize
UINT32 HeaderSize
Definition:
part_gpt.h:37
_GPT_TABLE_HEADER::PartitionEntryArrayCrc32
UINT32 PartitionEntryArrayCrc32
Definition:
part_gpt.h:48
_GPT_TABLE_HEADER::HeaderCrc32
UINT32 HeaderCrc32
Definition:
part_gpt.h:38
_GPT_TABLE_HEADER::PartitionEntryLba
UINT64 PartitionEntryLba
Definition:
part_gpt.h:45
_GPT_TABLE_HEADER::Reserved
UINT32 Reserved
Definition:
part_gpt.h:39
_GPT_TABLE_HEADER::MyLba
UINT64 MyLba
Definition:
part_gpt.h:40
_GPT_TABLE_HEADER::Signature
CHAR Signature[8]
Definition:
part_gpt.h:35
_GPT_TABLE_HEADER::AlternateLba
UINT64 AlternateLba
Definition:
part_gpt.h:41
UINT32
uint32_t UINT32
Definition:
typedefs.h:59
boot
freeldr
freeldr
disk
part_gpt.h
Generated on Thu Apr 16 2026 06:03:07 for ReactOS by
1.9.6