MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PiFirmwareFile.h File Reference

Data Structures

union  EFI_FFS_INTEGRITY_CHECK
 
struct  EFI_FFS_FILE_HEADER
 
struct  EFI_FFS_FILE_HEADER2
 
struct  EFI_COMMON_SECTION_HEADER
 
struct  EFI_COMMON_SECTION_HEADER2
 
struct  EFI_COMPRESSION_SECTION
 
struct  EFI_COMPRESSION_SECTION2
 
struct  EFI_FREEFORM_SUBTYPE_GUID_SECTION
 
struct  EFI_FREEFORM_SUBTYPE_GUID_SECTION2
 
struct  EFI_GUID_DEFINED_SECTION
 
struct  EFI_GUID_DEFINED_SECTION2
 
struct  EFI_USER_INTERFACE_SECTION
 
struct  EFI_USER_INTERFACE_SECTION2
 
struct  EFI_VERSION_SECTION
 
struct  EFI_VERSION_SECTION2
 

Macros

#define FFS_FIXED_CHECKSUM   0xAA
 
#define EFI_FV_FILETYPE_ALL   0x00
 
#define EFI_FV_FILETYPE_RAW   0x01
 
#define EFI_FV_FILETYPE_FREEFORM   0x02
 
#define EFI_FV_FILETYPE_SECURITY_CORE   0x03
 
#define EFI_FV_FILETYPE_PEI_CORE   0x04
 
#define EFI_FV_FILETYPE_DXE_CORE   0x05
 
#define EFI_FV_FILETYPE_PEIM   0x06
 
#define EFI_FV_FILETYPE_DRIVER   0x07
 
#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER   0x08
 
#define EFI_FV_FILETYPE_APPLICATION   0x09
 
#define EFI_FV_FILETYPE_MM   0x0A
 
#define EFI_FV_FILETYPE_SMM   EFI_FV_FILETYPE_MM
 
#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE   0x0B
 
#define EFI_FV_FILETYPE_COMBINED_MM_DXE   0x0C
 
#define EFI_FV_FILETYPE_COMBINED_SMM_DXE   EFI_FV_FILETYPE_COMBINED_MM_DXE
 
#define EFI_FV_FILETYPE_MM_CORE   0x0D
 
#define EFI_FV_FILETYPE_SMM_CORE   EFI_FV_FILETYPE_MM_CORE
 
#define EFI_FV_FILETYPE_MM_STANDALONE   0x0E
 
#define EFI_FV_FILETYPE_MM_CORE_STANDALONE   0x0F
 
#define EFI_FV_FILETYPE_OEM_MIN   0xc0
 
#define EFI_FV_FILETYPE_OEM_MAX   0xdf
 
#define EFI_FV_FILETYPE_DEBUG_MIN   0xe0
 
#define EFI_FV_FILETYPE_DEBUG_MAX   0xef
 
#define EFI_FV_FILETYPE_FFS_MIN   0xf0
 
#define EFI_FV_FILETYPE_FFS_MAX   0xff
 
#define EFI_FV_FILETYPE_FFS_PAD   0xf0
 
#define FFS_ATTRIB_LARGE_FILE   0x01
 
#define FFS_ATTRIB_DATA_ALIGNMENT_2   0x02
 
#define FFS_ATTRIB_FIXED   0x04
 
#define FFS_ATTRIB_DATA_ALIGNMENT   0x38
 
#define FFS_ATTRIB_CHECKSUM   0x40
 
#define EFI_FILE_HEADER_CONSTRUCTION   0x01
 
#define EFI_FILE_HEADER_VALID   0x02
 
#define EFI_FILE_DATA_VALID   0x04
 
#define EFI_FILE_MARKED_FOR_UPDATE   0x08
 
#define EFI_FILE_DELETED   0x10
 
#define EFI_FILE_HEADER_INVALID   0x20
 
#define IS_FFS_FILE2(FfsFileHeaderPtr)   (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
 
#define FFS_FILE_SIZE(FfsFileHeaderPtr)
 
#define FFS_FILE2_SIZE(FfsFileHeaderPtr)   ((UINT32) (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize))
 
#define EFI_SECTION_ALL   0x00
 
#define EFI_SECTION_COMPRESSION   0x01
 
#define EFI_SECTION_GUID_DEFINED   0x02
 
#define EFI_SECTION_DISPOSABLE   0x03
 
#define EFI_SECTION_PE32   0x10
 
#define EFI_SECTION_PIC   0x11
 
#define EFI_SECTION_TE   0x12
 
#define EFI_SECTION_DXE_DEPEX   0x13
 
#define EFI_SECTION_VERSION   0x14
 
#define EFI_SECTION_USER_INTERFACE   0x15
 
#define EFI_SECTION_COMPATIBILITY16   0x16
 
#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE   0x17
 
#define EFI_SECTION_FREEFORM_SUBTYPE_GUID   0x18
 
#define EFI_SECTION_RAW   0x19
 
#define EFI_SECTION_PEI_DEPEX   0x1B
 
#define EFI_SECTION_MM_DEPEX   0x1C
 
#define EFI_SECTION_SMM_DEPEX   EFI_SECTION_MM_DEPEX
 
#define EFI_NOT_COMPRESSED   0x00
 
#define EFI_STANDARD_COMPRESSION   0x01
 
#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED   0x01
 
#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID   0x02
 
#define SECTION_SIZE(SectionHeaderPtr)
 
#define IS_SECTION2(SectionHeaderPtr)   (SECTION_SIZE (SectionHeaderPtr) == 0x00ffffff)
 
#define SECTION2_SIZE(SectionHeaderPtr)   (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
 

Typedefs

typedef UINT8 EFI_FV_FILETYPE
 
typedef UINT8 EFI_FFS_FILE_ATTRIBUTES
 
typedef UINT8 EFI_FFS_FILE_STATE
 
typedef UINT8 EFI_SECTION_TYPE
 
typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_DISPOSABLE_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_DISPOSABLE_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_DXE_DEPEX_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_FIRMWARE_VOLUME_IMAGE_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_PE32_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_PEI_DEPEX_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_PIC_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_PIC_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_TE_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_RAW_SECTION2
 
typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION
 
typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2
 

Detailed Description

The firmware file related definitions in PI.

Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
PI Version 1.6.

Macro Definition Documentation

#define EFI_FILE_DATA_VALID   0x04
#define EFI_FILE_DELETED   0x10
#define EFI_FILE_HEADER_CONSTRUCTION   0x01

FFS File State Bits.

#define EFI_FILE_HEADER_INVALID   0x20
#define EFI_FILE_HEADER_VALID   0x02
#define EFI_FILE_MARKED_FOR_UPDATE   0x08
#define EFI_FV_FILETYPE_ALL   0x00

File Types Definitions

#define EFI_FV_FILETYPE_APPLICATION   0x09
#define EFI_FV_FILETYPE_COMBINED_MM_DXE   0x0C
#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER   0x08
#define EFI_FV_FILETYPE_COMBINED_SMM_DXE   EFI_FV_FILETYPE_COMBINED_MM_DXE
#define EFI_FV_FILETYPE_DEBUG_MAX   0xef
#define EFI_FV_FILETYPE_DEBUG_MIN   0xe0
#define EFI_FV_FILETYPE_DRIVER   0x07
#define EFI_FV_FILETYPE_DXE_CORE   0x05
#define EFI_FV_FILETYPE_FFS_MAX   0xff
#define EFI_FV_FILETYPE_FFS_MIN   0xf0
#define EFI_FV_FILETYPE_FFS_PAD   0xf0
#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE   0x0B
#define EFI_FV_FILETYPE_FREEFORM   0x02
#define EFI_FV_FILETYPE_MM   0x0A
#define EFI_FV_FILETYPE_MM_CORE   0x0D
#define EFI_FV_FILETYPE_MM_CORE_STANDALONE   0x0F
#define EFI_FV_FILETYPE_MM_STANDALONE   0x0E
#define EFI_FV_FILETYPE_OEM_MAX   0xdf
#define EFI_FV_FILETYPE_OEM_MIN   0xc0
#define EFI_FV_FILETYPE_PEI_CORE   0x04
#define EFI_FV_FILETYPE_PEIM   0x06
#define EFI_FV_FILETYPE_RAW   0x01
#define EFI_FV_FILETYPE_SECURITY_CORE   0x03
#define EFI_FV_FILETYPE_SMM   EFI_FV_FILETYPE_MM
#define EFI_FV_FILETYPE_SMM_CORE   EFI_FV_FILETYPE_MM_CORE
#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID   0x02
#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED   0x01

Attributes of EFI_GUID_DEFINED_SECTION.

#define EFI_NOT_COMPRESSED   0x00

CompressionType of EFI_COMPRESSION_SECTION.

#define EFI_SECTION_ALL   0x00

Pseudo type. It is used as a wild card when retrieving sections. The section type EFI_SECTION_ALL matches all section types.

#define EFI_SECTION_COMPATIBILITY16   0x16
#define EFI_SECTION_COMPRESSION   0x01

Encapsulation section Type values.

#define EFI_SECTION_DISPOSABLE   0x03
#define EFI_SECTION_DXE_DEPEX   0x13
#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE   0x17
#define EFI_SECTION_FREEFORM_SUBTYPE_GUID   0x18
#define EFI_SECTION_GUID_DEFINED   0x02
#define EFI_SECTION_MM_DEPEX   0x1C
#define EFI_SECTION_PE32   0x10

Leaf section Type values.

#define EFI_SECTION_PEI_DEPEX   0x1B
#define EFI_SECTION_PIC   0x11
#define EFI_SECTION_RAW   0x19
#define EFI_SECTION_SMM_DEPEX   EFI_SECTION_MM_DEPEX
#define EFI_SECTION_TE   0x12
#define EFI_SECTION_USER_INTERFACE   0x15
#define EFI_SECTION_VERSION   0x14
#define EFI_STANDARD_COMPRESSION   0x01
#define FFS_ATTRIB_CHECKSUM   0x40
#define FFS_ATTRIB_DATA_ALIGNMENT   0x38
#define FFS_ATTRIB_DATA_ALIGNMENT_2   0x02
#define FFS_ATTRIB_FIXED   0x04
#define FFS_ATTRIB_LARGE_FILE   0x01

FFS File Attributes.

#define FFS_FILE2_SIZE (   FfsFileHeaderPtr)    ((UINT32) (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize))
#define FFS_FILE_SIZE (   FfsFileHeaderPtr)
Value:
((UINT32) ( \
(((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[0] ) | \
(((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[1] << 8) | \
(((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[2] << 16)))
IN UINT32 IN EFI_LBA IN OUT EFI_ERASE_BLOCK_TOKEN IN UINTN Size
Definition: EraseBlock.h:71
unsigned __int32 UINT32
Definition: ProcessorBind.h:130
UINT32 UINTN
Definition: ProcessorBind.h:218
Definition: PiFirmwareFile.h:108

The argument passed as the FfsFileHeaderPtr parameter to the FFS_FILE_SIZE() function-like macro below must not have side effects: FfsFileHeaderPtr is evaluated multiple times.

#define FFS_FIXED_CHECKSUM   0xAA

FFS_FIXED_CHECKSUM is the checksum value used when the FFS_ATTRIB_CHECKSUM attribute bit is clear.

#define IS_FFS_FILE2 (   FfsFileHeaderPtr)    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
#define IS_SECTION2 (   SectionHeaderPtr)    (SECTION_SIZE (SectionHeaderPtr) == 0x00ffffff)
#define SECTION2_SIZE (   SectionHeaderPtr)    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
#define SECTION_SIZE (   SectionHeaderPtr)
Value:
((UINT32) ( \
(((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[0] ) | \
(((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[1] << 8) | \
(((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[2] << 16)))
Definition: PiFirmwareFile.h:232
IN UINT32 IN EFI_LBA IN OUT EFI_ERASE_BLOCK_TOKEN IN UINTN Size
Definition: EraseBlock.h:71
unsigned __int32 UINT32
Definition: ProcessorBind.h:130
UINT32 UINTN
Definition: ProcessorBind.h:218

The argument passed as the SectionHeaderPtr parameter to the SECTION_SIZE() and IS_SECTION2() function-like macros below must not have side effects: SectionHeaderPtr is evaluated multiple times.

Typedef Documentation

Leaf section type that contains an IA-32 16-bit executable image.

An encapsulation section type in which the section data is disposable. A disposable section is an encapsulation section in which the section data may be disposed of during the process of creating or updating a firmware image without significant impact on the usefulness of the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This allows optional or descriptive data to be included with the firmware file which can be removed in order to conserve space. The contents of this section are implementation specific, but might contain debug data or detailed integration instructions.

The leaf section which could be used to determine the dispatch order of DXEs.

The leaf section which contains a PI FV.

The leaf section which contains PE32+ image.

The leaf section used to determine the dispatch order of PEIMs.

A leaf section type that contains a position-independent-code (PIC) image. A PIC image section is a leaf section that contains a position-independent-code (PIC) image. In addition to normal PE32+ images that contain relocation information, PEIM executables may be PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all relocation information has been stripped from the image and the image can be moved and will execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must be used if the section is 16MB or larger.

The leaf section which contains an array of zero or more bytes.

The SMM dependency expression section is a leaf section that contains a dependency expression that is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform Initialization Specification, Volume 2, for details regarding the format of the dependency expression. The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.

The leaf section which constains the position-independent-code image.