## @file
# This is a sample driver which show how HII protocol, VFR and UNI files are used to
# create a driver which can be dipslayed and configured by a UEFI HII Form Browser.
#
# Copyright (c) 2007 - 2013, 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
  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                              ## CONSUMES ## Guid
  gDriverSampleFormSetGuid                      ## PRODUCES ## Guid
  gDriverSampleInventoryGuid                    ## PRODUCES ## Guid
  gEfiIfrRefreshIdOpGuid                        ## SOMETIMES_PRODUCES ## EventGuid

[Protocols]
  gEfiHiiStringProtocolGuid                     ## CONSUMES
  gEfiHiiConfigRoutingProtocolGuid              ## CONSUMES
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiFormBrowser2ProtocolGuid                  ## CONSUMES
  gEfiHiiDatabaseProtocolGuid                   ## CONSUMES
  gEfiSimpleTextInputExProtocolGuid             ## CONSUMES
  gEfiFormBrowserExProtocolGuid                 ## CONSUMES

[Depex]
  gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid

