123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- /*++
- Copyright (c) 2014 Minoca Corp.
- This file is licensed under the terms of the GNU General Public License
- version 3. Alternative licensing terms are available. Contact
- info@minocacorp.com for details. See the LICENSE file at the root of this
- project for complete licensing information.
- Module Name:
- efiimg.h
- Abstract:
- This header contains definitions for the EFI image format.
- Author:
- Evan Green 6-Mar-2014
- --*/
- //
- // ------------------------------------------------------------------- Includes
- //
- //
- // --------------------------------------------------------------------- Macros
- //
- //
- // ---------------------------------------------------------------- Definitions
- //
- //
- // Define EFI file types.
- //
- #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_FIRMWARE_VOLUME_IMAGE 0x0B
- #define EFI_SECTION_ALL 0x00
- //
- // Define EFI encapsulation section types.
- //
- #define EFI_SECTION_COMPRESSION 0x01
- #define EFI_SECTION_GUID_DEFINED 0x02
- //
- // Define EFI leaf section types.
- //
- #define EFI_SECTION_FIRST_LEAF_SECTION_TYPE 0x10
- #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_LAST_LEAF_SECTION_TYPE 0x1B
- #define EFI_SECTION_LAST_SECTION_TYPE 0x1B
- //
- // Define compression type values.
- //
- #define EFI_NOT_COMPRESSED 0x00
- #define EFI_STANDARD_COMPRESSION 0x01
- #define EFI_CUSTOMIZED_COMPRESSION 0x02
- //
- // Define GUIDed section attributes.
- //
- #define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01
- #define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02
- //
- // Define authentication status bits.
- //
- #define EFI_AGGREGATE_AUTH_STATUS_PLATFORM_OVERRIDE 0x000001
- #define EFI_AGGREGATE_AUTH_STATUS_IMAGE_SIGNED 0x000002
- #define EFI_AGGREGATE_AUTH_STATUS_NOT_TESTED 0x000004
- #define EFI_AGGREGATE_AUTH_STATUS_TEST_FAILED 0x000008
- #define EFI_AGGREGATE_AUTH_STATUS_ALL 0x00000f
- #define EFI_LOCAL_AUTH_STATUS_PLATFORM_OVERRIDE 0x010000
- #define EFI_LOCAL_AUTH_STATUS_IMAGE_SIGNED 0x020000
- #define EFI_LOCAL_AUTH_STATUS_NOT_TESTED 0x040000
- #define EFI_LOCAL_AUTH_STATUS_TEST_FAILED 0x080000
- #define EFI_LOCAL_AUTH_STATUS_ALL 0x0f0000
- //
- // ------------------------------------------------------ Data Type Definitions
- //
- typedef UINT8 EFI_FV_FILETYPE, *PEFI_FV_FILETYPE;
- typedef UINT8 EFI_SECTION_TYPE, *PEFI_SECTION_TYPE;
- #pragma pack(push, 1)
- typedef union _EFI_COMMON_SECTION_HEADER {
- struct {
- UINT8 Size[3];
- UINT8 Type;
- } Elements;
- UINT32 AsUint32;
- } PACKED EFI_COMMON_SECTION_HEADER, *PEFI_COMMON_SECTION_HEADER;
- typedef union _EFI_COMMON_SECTION_HEADER2 {
- struct {
- UINT8 Size[3];
- EFI_SECTION_TYPE Type;
- UINT32 ExtendedSize;
- } Elements;
- UINT32 AsUint32;
- } PACKED EFI_COMMON_SECTION_HEADER2, *PEFI_COMMON_SECTION_HEADER2;
- typedef struct _EFI_COMPRESSION_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- UINT32 UncompressedLength;
- UINT8 CompressionType;
- } PACKED EFI_COMPRESSION_SECTION, *PEFI_COMPRESSION_SECTION;
- typedef struct _EFI_GUID_DEFINED_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- EFI_GUID SectionDefinitionGuid;
- UINT16 DataOffset;
- UINT16 Attributes;
- } PACKED EFI_GUID_DEFINED_SECTION, *PEFI_GUID_DEFINED_SECTION;
- typedef struct _EFI_GUID_DEFINED_SECTION2 {
- EFI_COMMON_SECTION_HEADER2 CommonHeader;
- EFI_GUID SectionDefinitionGuid;
- UINT16 DataOffset;
- UINT16 Attributes;
- } PACKED EFI_GUID_DEFINED_SECTION2, *PEFI_GUID_DEFINED_SECTION2;
- typedef struct _EFI_PE32_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_PE32_SECTION, *PEFI_PE32_SECTION;
- typedef struct _EFI_PIC_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_PIC_SECTION, *PEFI_PIC_SECTION;
- typedef struct _EFI_PEIM_HEADER_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_PEIM_HEADER_SECTION, *PEFI_PEIM_HEADER_SECTION;
- typedef struct _EFI_DEPEX_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_DEPEX_SECTION, *PEFI_DEPEX_SECTION;
- typedef struct _EFI_VERSION_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- UINT16 BuildNumber;
- INT16 VersionString[1];
- } PACKED EFI_VERSION_SECTION, *PEFI_VERSION_SECTION;
- typedef struct _EFI_USER_INTERFACE_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- INT16 FileNameString[1];
- } PACKED EFI_USER_INTERFACE_SECTION, *PEFI_USER_INTERFACE_SECTION;
- typedef struct _EFI_CODE16_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_CODE16_SECTION, *PEFI_CODE16_SECTION;
- typedef struct _EFI_FIRMWARE_VOLUME_IMAGE_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_FIRMWARE_VOLUME_IMAGE_SECTION, *PEFI_FIRMWARE_VOLUME_IMAGE_SECTION;
- typedef struct _EFI_FREEFORM_SUBTYPE_GUID_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- EFI_GUID SubTypeGuid;
- } PACKED EFI_FREEFORM_SUBTYPE_GUID_SECTION, *PEFI_FREEFORM_SUBTYPE_GUID_SECTION;
- typedef struct _EFI_RAW_SECTION {
- EFI_COMMON_SECTION_HEADER CommonHeader;
- } PACKED EFI_RAW_SECTION, *PEFI_RAW_SECTION;
- #pragma pack(pop)
- typedef union _EFI_FILE_SECTION_POINTER {
- EFI_COMMON_SECTION_HEADER *CommonHeader;
- EFI_COMPRESSION_SECTION *CompressionSection;
- EFI_GUID_DEFINED_SECTION *GuidDefinedSection;
- EFI_PE32_SECTION *Pe32Section;
- EFI_PIC_SECTION *PicSection;
- EFI_PEIM_HEADER_SECTION *PeimHeaderSection;
- EFI_DEPEX_SECTION *DependencySection;
- EFI_VERSION_SECTION *VersionSection;
- EFI_USER_INTERFACE_SECTION *UISection;
- EFI_CODE16_SECTION *Code16Section;
- EFI_FIRMWARE_VOLUME_IMAGE_SECTION *FVImageSection;
- EFI_FREEFORM_SUBTYPE_GUID_SECTION *FreeformSubtypeSection;
- EFI_RAW_SECTION *RawSection;
- } EFI_FILE_SECTION_POINTER, *PEFI_FILE_SECTION_POINTER;
- //
- // -------------------------------------------------------------------- Globals
- //
- //
- // -------------------------------------------------------- Function Prototypes
- //
|