## @file
# This is a sample HII driver.
#
# This driver shows how HII protocol, VFR and UNI files are used to create a HII
# driver which can be dipslayed and configured by a UEFI HII Form Browser.
#
# Copyright (c) 2007 - 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                      = DriverSample
  MODULE_UNI_FILE                = DriverSample.uni
  FILE_GUID                      = FE3542FE-C1D3-4EF8-657C-8048606FF671
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = DriverSampleInit
  UNLOAD_IMAGE                   = DriverSampleUnload

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DriverSample.c
  InventoryStrings.uni
  NVDataStruc.h
  VfrStrings.uni
  DriverSample.h
  Inventory.vfr
  Vfr.vfr

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  HiiLib
  PrintLib
  UefiLib
  DevicePathLib

[Guids]
  gEfiIfrTianoGuid                              ## PRODUCES ## UNDEFINED
  gDriverSampleInventoryGuid                    ## CONSUMES ## HII
  ## SOMETIMES_PRODUCES ## Event
  ## CONSUMES ## Event
  gEfiIfrRefreshIdOpGuid
  ## CONSUMES ## HII
  ## PRODUCES ## Variable:L"MyIfrNVData"
  ## SOMETIMES_CONSUMES ## Variable:L"MyIfrNVData"
  ## PRODUCES ## Variable:L"MyEfiVar"
  ## SOMETIMES_CONSUMES ## Variable:L"MyEfiVar"
  ## PRODUCES ## GUID  # HiiConstructConfigHdr MyEfiVar
  ## PRODUCES ## GUID  # HiiConstructConfigHdr MyIfrNVData
  ## SOMETIMES_CONSUMES ## GUID  # HiiIsConfigHdrMatch MyEfiVar
  ## SOMETIMES_CONSUMES ## GUID  # HiiIsConfigHdrMatch MyIfrNVData
  ## SOMETIMES_PRODUCES ## GUID  # HiiGetBrowserData MyIfrNVData
  ## SOMETIMES_CONSUMES ## GUID  # HiiSetBrowserData MyIfrNVData
  ## SOMETIMES_PRODUCES ## GUID  # HiiGetBrowserData MyEfiVar
  ## SOMETIMES_CONSUMES ## GUID  # HiiSetBrowserData MyEfiVar
  gDriverSampleFormSetGuid

[Protocols]
  ## PRODUCES # DriverSampleFormSet
  ## PRODUCES # DriverSampleInventory
  gEfiDevicePathProtocolGuid
  gEfiHiiStringProtocolGuid                     ## CONSUMES
  gEfiHiiConfigRoutingProtocolGuid              ## CONSUMES
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiFormBrowser2ProtocolGuid                  ## CONSUMES
  gEfiHiiDatabaseProtocolGuid                   ## CONSUMES
  gEfiSimpleTextInputExProtocolGuid             ## SOMETIMES_CONSUMES
  gEdkiiFormBrowserExProtocolGuid               ## CONSUMES
  gEfiConfigKeywordHandlerProtocolGuid          ## CONSUMES
  gEfiHiiPopupProtocolGuid                      ## CONSUMES

[Depex]
  gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  DriverSampleExtra.uni
