## @file
#  Provides variable service.
#
#  This module installs variable arch protocol and variable write arch protocol to provide
#  variable services: SetVariable, GetVariable, GetNextVariableName and QueryVariableInfo.
#
#  Caution: This module requires additional review when modified.
#  This driver will have external input - variable data.
#  This external input must be validated carefully to avoid security issues such as
#  buffer overflow or integer overflow.
#
# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = VariableRuntimeDxe
  MODULE_UNI_FILE                = VariableRuntimeDxe.uni
  FILE_GUID                      = CBD2E4D5-7068-4FF5-B462-9822B4AD8D60
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = VariableServiceInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  VIRTUAL_ADDRESS_MAP_CALLBACK  =  VariableClassAddressChangeEvent
#

[Sources]
  Reclaim.c
  Variable.c
  VariableDxe.c
  Variable.h
  VariableNonVolatile.c
  VariableNonVolatile.h
  VariableParsing.c
  VariableParsing.h
  VariableRuntimeCache.c
  VariableRuntimeCache.h
  PrivilegePolymorphic.h
  Measurement.c
  TcgMorLockDxe.c
  VarCheck.c
  VariableExLib.c
  SpeculationBarrierDxe.c
  VariableLockRequestToLock.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  SynchronizationLib
  UefiLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  UefiRuntimeLib
  DxeServicesTableLib
  UefiDriverEntryPoint
  PcdLib
  HobLib
  TpmMeasurementLib
  AuthVariableLib
  VarCheckLib
  VariableFlashInfoLib
  VariablePolicyLib
  VariablePolicyHelperLib
  SafeIntLib

[Protocols]
  gEfiFirmwareVolumeBlockProtocolGuid           ## CONSUMES
  ## CONSUMES
  ## NOTIFY
  gEfiFaultTolerantWriteProtocolGuid
  gEfiVariableWriteArchProtocolGuid             ## PRODUCES
  gEfiVariableArchProtocolGuid                  ## PRODUCES
  gEdkiiVariableLockProtocolGuid                ## PRODUCES
  gEdkiiVariablePolicyProtocolGuid              ## CONSUMES
  gEdkiiVarCheckProtocolGuid                    ## PRODUCES

[Guids]
  ## SOMETIMES_CONSUMES   ## GUID # Signature of Variable store header
  ## SOMETIMES_PRODUCES   ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiAuthenticatedVariableGuid

  ## SOMETIMES_CONSUMES   ## GUID # Signature of Variable store header
  ## SOMETIMES_PRODUCES   ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiVariableGuid

  ## SOMETIMES_CONSUMES   ## Variable:L"PlatformLang"
  ## SOMETIMES_PRODUCES   ## Variable:L"PlatformLang"
  ## SOMETIMES_CONSUMES   ## Variable:L"Lang"
  ## SOMETIMES_PRODUCES   ## Variable:L"Lang"
  ## SOMETIMES_CONSUMES   ## Variable:L"PK"
  ## SOMETIMES_CONSUMES   ## Variable:L"KEK"
  ## SOMETIMES_CONSUMES   ## Variable:L"SecureBoot"
  gEfiGlobalVariableGuid

  gEfiMemoryOverwriteControlDataGuid            ## SOMETIMES_CONSUMES   ## Variable:L"MemoryOverwriteRequestControl"
  gEfiMemoryOverwriteRequestControlLockGuid     ## SOMETIMES_PRODUCES   ## Variable:L"MemoryOverwriteRequestControlLock"

  gEfiEventVirtualAddressChangeGuid             ## CONSUMES             ## Event
  gEfiSystemNvDataFvGuid                        ## CONSUMES             ## GUID
  gEfiEndOfDxeEventGroupGuid                    ## CONSUMES             ## Event
  gEdkiiFaultTolerantWriteGuid                  ## SOMETIMES_CONSUMES   ## HOB

  ## SOMETIMES_CONSUMES   ## Variable:L"VarErrorFlag"
  ## SOMETIMES_PRODUCES   ## Variable:L"VarErrorFlag"
  gEdkiiVarErrorFlagGuid

  ## SOMETIMES_CONSUMES   ## Variable:L"db"
  ## SOMETIMES_CONSUMES   ## Variable:L"dbx"
  ## SOMETIMES_CONSUMES   ## Variable:L"dbt"
  gEfiImageSecurityDatabaseGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize                 ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize             ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize         ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize               ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable         ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved      ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics  ## CONSUMES # statistic the information of variable.
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  VariableRuntimeDxeExtra.uni
