## @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 - 2017, 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                      = 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
  PrivilegePolymorphic.h
  Measurement.c
  TcgMorLockDxe.c
  VarCheck.c
  VariableExLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  SynchronizationLib
  UefiLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  UefiRuntimeLib
  DxeServicesTableLib
  UefiDriverEntryPoint
  PcdLib
  HobLib
  TpmMeasurementLib
  AuthVariableLib
  VarCheckLib

[Protocols]
  gEfiFirmwareVolumeBlockProtocolGuid           ## CONSUMES
  ## CONSUMES
  ## NOTIFY
  gEfiFaultTolerantWriteProtocolGuid
  gEfiVariableWriteArchProtocolGuid             ## PRODUCES
  gEfiVariableArchProtocolGuid                  ## PRODUCES
  gEdkiiVariableLockProtocolGuid                ## PRODUCES
  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.PcdFlashNvStorageVariableSize      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase      ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize                 ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize             ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize               ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe  ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics  ## CONSUMES # statistic the information of variable.
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  VariableRuntimeDxeExtra.uni
