A.5.2 GUID File Template
GUIDs and their associated data structures are declared just like protocols.
The only difference is that GUIDs are typically placed in a different
subdirectory of an EDK II package. The typical path to a protocol .h file is
<<PackageName>>/Include/Guid/<<GuidName>>.h
. For example, all the GUIDs
defined in the UEFI Specification can be found in the EDK II MdePg in
/MdePkg/Include/Guid. When a new GUID is defined and added to an include
directory of an EDK II package, the GUID must also be added to the [Guids]
section of a package's .dec file. The .dec file is where the C variable name
for the GUID is declared and mapped to GUID value for the protocol. Defining a
new GUID is not commonly required when implementing a new UEFI Driver. If a
UEFI Driver implementation does require a new GUID definition, then the new
GUID is usually added to the same EDK II package that contains the UEFI Driver
implementation.
The following example shows a template for adding a new GUID to the [Guids] section of an EDK II package .dec file. Following that, Example A-29 shows the template for the .h files for GUIDs placed in the include directory of an EDK II package.
Example A-28-Add GUID to an EDK II package
[Guids]
Include/Guid/<<GuidName>>.h
gEfi<<GuidName>>Guid = <<GUID_STRUCT>>
Example A-29-GUID include file template
/** @file
<<BriefDescription>>
<<DetailedDescription>>
<<Copyright>>
<<License>>
**/
#ifndef __<<GUID_NAME>>_H__
#define __<<GUID_NAME>>_H__
#define EFI_<<GUID_NAME>>_GUID \
<<GUID_STRUCT>>
///
/// GUID specific defines
///
///
/// GUID specific structures
///
typedef struct {
//
// Place GUID specific data fields here
//
} EFI_<<GUID_NAME>>_GUID;
extern EFI_GUID gEfi <<GuidName>>Guid;
#endif