1 /** @file
2   This file defines the EFI Partition Information Protocol.
3 
4   Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
5   SPDX-License-Identifier: BSD-2-Clause-Patent
6 
7   @par Revision Reference:
8   This Protocol is introduced in UEFI Specification 2.7
9 
10 **/
11 
12 #ifndef __PARTITION_INFO_PROTOCOL_H__
13 #define __PARTITION_INFO_PROTOCOL_H__
14 
15 #include <IndustryStandard/Mbr.h>
16 #include <Uefi/UefiGpt.h>
17 
18 //
19 // EFI Partition Information Protocol GUID value
20 //
21 #define EFI_PARTITION_INFO_PROTOCOL_GUID \
22   { 0x8cf2f62c, 0xbc9b, 0x4821, { 0x80, 0x8d, 0xec, 0x9e, 0xc4, 0x21, 0xa1, 0xa0 }};
23 
24 
25 #define EFI_PARTITION_INFO_PROTOCOL_REVISION     0x0001000
26 #define PARTITION_TYPE_OTHER                     0x00
27 #define PARTITION_TYPE_MBR                       0x01
28 #define PARTITION_TYPE_GPT                       0x02
29 
30 #pragma pack(1)
31 
32 ///
33 /// Partition Information Protocol structure.
34 ///
35 typedef struct {
36   //
37   // Set to EFI_PARTITION_INFO_PROTOCOL_REVISION.
38   //
39   UINT32                     Revision;
40   //
41   // Partition info type (PARTITION_TYPE_MBR, PARTITION_TYPE_GPT, or PARTITION_TYPE_OTHER).
42   //
43   UINT32                     Type;
44   //
45   // If 1, partition describes an EFI System Partition.
46   //
47   UINT8                      System;
48   UINT8                      Reserved[7];
49   union {
50     ///
51     /// MBR data
52     ///
53     MBR_PARTITION_RECORD     Mbr;
54     ///
55     /// GPT data
56     ///
57     EFI_PARTITION_ENTRY      Gpt;
58   } Info;
59 } EFI_PARTITION_INFO_PROTOCOL;
60 
61 #pragma pack()
62 
63 ///
64 /// Partition Information Protocol GUID variable.
65 ///
66 extern EFI_GUID gEfiPartitionInfoProtocolGuid;
67 
68 #endif
69