## @file
#  Provides security service of deferred image load
#
#  The platform may need to defer the execution of an image because of security
#  considerations. These deferred images will be recorded and then reported by
#  installing an instance of the EFI_DEFERRED_IMAGE_LOAD_PROTOCOL.
#
# Copyright (c) 2009 - 2018, 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                    = 0x00010005
  BASE_NAME                      = DxeDeferImageLoadLib
  MODULE_UNI_FILE                = DxeDeferImageLoadLib.uni
  FILE_GUID                      = 5E2FAE1F-41DA-4fbd-BC81-603CE5CD8497
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NULL|DXE_DRIVER UEFI_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION
  CONSTRUCTOR                    = DxeDeferImageLoadLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  DxeDeferImageLoadLib.c
  DxeDeferImageLoadLib.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  SecurityManagementLib
  MemoryAllocationLib
  DevicePathLib
  BaseMemoryLib
  PrintLib
  DebugLib
  UefiLib
  PcdLib

[Protocols]
  gEfiFirmwareVolume2ProtocolGuid                        ## SOMETIMES_CONSUMES
  gEfiBlockIoProtocolGuid                                ## SOMETIMES_CONSUMES
  gEfiSimpleFileSystemProtocolGuid                       ## SOMETIMES_CONSUMES
  gEfiDeferredImageLoadProtocolGuid                      ## SOMETIMES_PRODUCES
  ## SOMETIMES_CONSUMES
  ## NOTIFY
  gEfiUserManagerProtocolGuid

[Guids]
  gEfiGlobalVariableGuid                                  ## SOMETIMES_CONSUMES  ## Variable:L"BootOrder"

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdDeferImageLoadPolicy   ## SOMETIMES_CONSUMES
