Appendix G Module Types

Table 9 EDK II Module Types
FILE TYPE MODULE_TYPE EDK II Extension Description
Library BASE, SEC, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, DXE_RUNTIME_DRIVER, DXE_SAL_DRIVER, DXE_SMM_DRIVER, SMM_CORE, UEFI_DRIVER, UEFI_APPLICATION, USER_DEFINED .lib Library component used in the build for linking against components.
File USER_DEFINED .bin In EDK, this was used to specify various types of source or binary files.
Legacy16 USER_DEFINED .bin or .rom In EDK, this was used to specify various types of binary files.
BINARY USER_DEFINED .bin or .rom In EDK, this was used to specify various types of binary files.
CONFIG USER_DEFINED .bin In EDK, this was used to sepcify INI text files that were processed by different tools into binary files.
LOGO USER_DEFINED .bmp The MODULE_TYPE for a LOGO, when migrating to EDK II should be specified as USER_DEFINED. The .bmp file should be included under a [binaries] section. In EDK, the COMPONENT_TYPE of LOGO was used to specify a .bmp file in the [sources] section.
RAWFILE USER_DEFINED .raw In EDK, this was used to specify various types of binary files.
FVIMAGEFILE N/A .fv
APRIORI Not Supported. .bin Distribution of an Aprior file is not supported. These files are created during image generation stage based on content of a .FDF file. In EDK, the file was just a text file with a single line for each driver.
BASE BASE .efi Modules of this type can be ported to any execution environment. This module type is intended to be use by silicon module developers to produce source code that is not tied to any specific execution environment.
SEC SEC .efi Modules of this type are designed to start execution at the reset vector of a CPU. They are responsible for preparing the platform for the PEI Phase. Since there are no standard services defined for SEC, modules of this type follow the same rules as modules of type Base and typically include some amount of CPU specific assembly code to establish temporary memory for a stack. Modules of this type may optionally produce services that are passed to the PEI Phase in HOBs and those services must be compliant with the PEI CIS.
PEI_CORE PEI_CORE .efi This module type is used by PEI Core implementations that are complaint with the PEI CIS.
PEIM PEIM .efi This module type is used by PEIMs that are compliant with the PEI CIS
DXE_CORE DXE_CORE .efi This module type is used by DXE Core implementations that are compliant with the DXE CIS.
DXE_DRIVER DXE_DRIVER .efi This module type is used by DXE Drivers that are complaint with the DXE CIS. These modules only execute in the boot services environment and are destroyed when ExitBootServices() is called.
DXE_RUNTIME_DRIVER DXE_RUNTIME_DRIVER .efi This module type is used by DXE Drivers that are complaint with the DXE CIS. These modules execute in both boot services and runtime services environments. This means the services that these modules produce are available after ExitBootServices() is called. If SetVirtualAddressMap() is called, then modules of this type are relocated according to virtual address map provided by the operating system.
DXE_SAL_DRIVER DXE_SAL_DRIVER .efi This module type is used by DXE Drivers that can be called in physical mode before SetVirtualAddressMap() is called and either physical mode or virtual mode after SetVirtualAddressMap() is called. This module type is only available to IPF CPUs. This means the services that these modules produce are available after ExitBootServices().
SMM_CORE SMM_CORE .efi This module is the SMM Core.
DXE_SMM_DRIVER DXE_SMM_DRIVER .efi This module type is used by DXE. Drivers that are loaded into SMRAM. As a result, this module type is only available for IA-32 and x64 CPUs. These modules only execute in physical mode, and are never destroyed. This means the services that these modules produce are available after ExitBootServices().
UEFI_DRIVER UEFI_DRIVER .efi This module type is used by UEFI Drivers that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. These modules provide services in the boot services execution environment. UEFI Drivers that return EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an error are unloaded from memory.
UEFI_APPLICATION UEFI_APPLICATION .efi This module type is used by UEFI Applications that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI Applications are always unloaded when they exit.
USER_DEFINED USER_DEFINED .bin or .rom User defined extension
EFI Dependency Section Any - the code for these sections is included as part of any module, and no separate INF is required. .dpx This is the compiled dependency section for SMM, PEIM or DXE modules. A dependency section may also be generated from a dependency source (.dxs) file, if specified in the [Sources] section.
EFI User Interface Section Any - the code for these sections is included as part of any module, and no separate INF is required. .ui This is a processed User Interface section
EFI Version Section Any - the code for these sections is included as part of any module, and no separate INF is required. .ver This is a processed Version section

This following table shows the mapping of EDK II Module Types to EDK Component Types.

Table 10 Module Type to Component Type Mapping
EDK II Module Type EDK Component Type
BASE, SEC, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, DXE_RUNTIME_DRIVER, DXE_SAL_DRIVER, DXE_SMM_DRIVER, UEFI_DRIVER, UEFI_APPLICATION LIBRARY
BASE LIBRARY, SECURITY_CORE, PEI_CORE, COMBINED_PEIM_DRIVER, PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER, SAL_RT_DRIVER, APPLICATION
SEC SECURITY_CORE
PEI_CORE PEI_CORE
PEIM COMBINED_PEIM_DRIVER (See NOTE below)
PEIM PIC_PEIM
PEIM RELOCATABLE_PEIM
DXE_CORE BS_DRIVER
DXE_DRIVER BS_DRIVER with a Dependency Section
DXE_RUNTIME_DRIVER RT_DRIVER
DXE_SAL_DRIVER SAL_RT_DRIVER
DXE_SMM_DRIVER BS_DRIVER
UEFI_DRIVER BS_DRIVER without a Dependency Section.
UEFI_APPLICATION APPLICATION

Note: The EDK II build system does not support creation of COMBINED_PEIM_DRIVER EFI leaf sections.