Appendix E Sample Binary INF Files

The following are example INF files for the binary modules, EnhancedFatDxe, in the FatBinPkg. The second example is a generated binary INF file for the RuntimeDxe driver in the MdeModulePkg.

E.1 FatBinPkg/EnhancedFatDxe/Fat.inf

## @file
#
# Binary FAT32 EFI Driver for IA32, X64, IPF and EBC arch.
#
# This UEFI driver detects the FAT file system in the disk.
# It also produces the Simple File System protocol for the consumer to
# perform file and directory operations on the disk.
#
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are licensed and made
# available under the terms and conditions of the BSD License which
# accompanies this distribution. The full text of the license may be
# found at:
# http://opensource.org/licenses/bsd-license.php
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
# IMPLIED.
#
##

[Defines]
  INF_VERSION    = 0x00010009
  BASE_NAME      = Fat
  FILE_GUID      = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F
  MODULE_TYPE    = UEFI_DRIVER
  VERSION_STRING = 1.0

#
# The following information is for reference only and not required by the
# build tools.
#
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
#

[Binaries.Ia32]
  PE32|Ia32/Fat.efi|*

[Binaries.X64]
  PE32|X64/Fat.efi|*

[Binaries.IPF]
  PE32|Ipf/Fat.efi|*

[Binaries.EBC]
  PE32|Ebc/Fat.efi|*

[Binaries.ARM]
  PE32|Arm/Fat.efi|*

E.2 MdeModulePkg/Core/RuntimeDxe.inf

## @file
# Module that produces EFI runtime virtual switch over services.
#
# This runtime module installs Runtime Architectural Protocol and
# registers CalculateCrc32 boot services table, SetVirtualAddressMap &
# ConvertPointer runtime services table.
#
# Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are licensed and made
# available under the terms and conditions of the BSD License which
# accompanies this distribution. The full text of the license may be
# found at:
# http://opensource.org/licenses/bsd-license.php
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
# IMPLIED.
#
##

[Defines]
  INF_VERSION    = 0x0001001B
  BASE_NAME      = RuntimeDxe
  FILE_GUID      = B601F8C4-43B7-4784-95B1-F4226CB40CEE
  MODULE_TYPE    = DXE_RUNTIME_DRIVER
  VERSION_STRING = 1.0

[Packages.IA32]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[Binaries.IA32]
  PE32|RuntimeDxe.efi
  DXE_DEPEX|RuntimeDxe.depex

[PatchPcd.IA32]
  ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000047|0x1EC8

  ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27|0x1ECC

  ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07|0x1ECD

[Protocols.IA32]
  ## PRODUCES
  gEfiRuntimeArchProtocolGuid

  ## SOMETIMES_CONSUMES
  ## CONSUMES
  gEfiLoadedImageProtocolGuid

  ## SOMETIMES_CONSUMES
  gPcdProtocolGuid

  ## CONSUMES
  gEfiPcdProtocolGuid

  ## SOMETIMES_CONSUMES
  gEfiDevicePathProtocolGuid

  ## CONSUMES
  gEfiStatusCodeRuntimeProtocolGuid

  ## SOMETIMES_PRODUCES
  gEfiDriverBindingProtocolGuid

  ## SOMETIMES_CONSUMES
  gEfiSimpleTextOutProtocolGuid

  ## SOMETIMES_CONSUMES
  gEfiGraphicsOutputProtocolGuid

  ## SOMETIMES_CONSUMES
  gEfiHiiFontProtocolGuid

  ## SOMETIMES_CONSUMES # Consumes if gEfiGraphicsOutputProtocolGuid uninstalled
  gEfiUgaDrawProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiComponentNameProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiComponentName2ProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverConfigurationProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverConfiguration2ProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverDiagnosticsProtocolGuid

  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverDiagnostics2ProtocolGuid

[Ppis.IA32]

[Guids.IA32]
  ## CONSUMES # Event
  ## CONSUMES # Event
  ## PRODUCES # Event # RuntimeDriverSetVirtualAddressMap() signals this event.
  gEfiEventVirtualAddressChangeGuid

  ## SOMETIMES_CONSUMES
  ## SOMETIMES_CONSUMES ## UNDEFINED
  gEfiStatusCodeDataTypeDebugGuid

  ## CONSUMES # Event
  ## CONSUMES # Event
  gEfiEventExitBootServicesGuid

  ## SOMETIMES_CONSUMES ## UNDEFINED
  gEfiStatusCodeSpecificDataGuid

  ## SOMETIMES_CONSUMES # Event
  gEfiEventReadyToBootGuid

  ## SOMETIMES_CONSUMES # Event
  gEfiEventLegacyBootGuid

  ## SOMETIMES_CONSUMES # Variable
  gEfiGlobalVariableGuid

[PcdEx.IA32]

#
# The following information is for reference only and not required by the
# build tools.
#
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
#

## @AsBuilt
## MSFT:DEBUG_VS2008x86_IA32_SYMRENAME_FLAGS = Symbol renaming not needed for
## MSFT:DEBUG_VS2008x86_IA32_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE
## MSFT:DEBUG_VS2008x86_IA32_VFR_FLAGS = -l -n
## MSFT:DEBUG_VS2008x86_IA32_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
## MSFT:DEBUG_VS2008x86_IA32_GENFW_FLAGS =
## MSFT:DEBUG_VS2008x86_IA32_OPTROM_FLAGS = -e
## MSFT:DEBUG_VS2008x86_IA32_SLINK_FLAGS = /NOLOGO /LTCG /Zd /Zi
## MSFT:DEBUG_VS2008x86_IA32_ASL_FLAGS =
## MSFT:DEBUG_VS2008x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4/Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
## MSFT:DEBUG_VS2008x86_IA32_VFRPP_FLAGS = /nologo /E /TC/DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h /TC /Dmain=ReferenceAcpiTable
## MSFT:DEBUG_VS2008x86_IA32_APP_FLAGS = /nologo /E /TC
## MSFT:DEBUG_VS2008x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB/IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32/SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL/ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER/SAFESEH:NO /BASE:0 /DRIVER /DEBUG/PDB:$(OUTPUT_PATH)$(BASE_NAME).pdb/PDBSTRIPPED:$(OUTPUT_PATH)$(BASE_NAME)_Stripped.pdb
## MSFT:DEBUG_VS2008x86_IA32_ASLPP_FLAGS = /nologo /E /C /FIAutoGen.h
## MSFT:DEBUG_VS2008x86_IA32_OBJCOPY_FLAGS = objcopy not needed for
## MSFT:DEBUG_VS2008x86_IA32_MAKE_FLAGS = /nologo
## MSFT:DEBUG_VS2008x86_IA32_ASMLINK_FLAGS = /nologo /tiny

Note: In the above example, the backslash "\" character is used to show a line continuation for readability. Use of a backslash character in the actual INF file is not permitted.