#/** @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 - 2008, Intel Corporation. All rights reserved.
#
#  All rights reserved. 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

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  DriverSample.c
  inventorystrings.uni
  NVDataStruc.h
  VfrStrings.uni
  DriverSample.h
  Inventory.vfr
  Vfr.vfr
  VfrStrings.uni  

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  HiiLib
  IfrSupportLib
  ExtendedHiiLib
  ExtendedIfrSupportLib

[Protocols]
  gEfiHiiStringProtocolGuid                     # PROTOCOL ALWAYS_CONSUMED
  gEfiHiiConfigRoutingProtocolGuid              # PROTOCOL ALWAYS_CONSUMED
  gEfiHiiConfigAccessProtocolGuid               # PROTOCOL ALWAYS_CONSUMED
  gEfiFormBrowser2ProtocolGuid                  # PROTOCOL ALWAYS_CONSUMED
  gEfiHiiDatabaseProtocolGuid                   # PROTOCOL ALWAYS_CONSUMED


[Depex]
  gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid

