## @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 - 2014, 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
