#/** @file
# Component description file for WinNtFwh module
#
# This PEIM will produce the HOB to describe Firmware Volume, Firmware Devices
#  on the NT32 emulator.
# Copyright (c) 2006 - 2007, Intel Corporation
#
#  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                      = WinNtFirmwareVolumePei
  FILE_GUID                      = F0384FFD-8633-452f-9010-F6B7D2EAE2F1
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  EDK_RELEASE_VERSION            = 0x00020000
  EFI_SPECIFICATION_VERSION      = 0x00020000

  ENTRY_POINT                    = PeimInitializeWinNtFwh

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  WinntFwh.c


[Packages]
  Nt32Pkg/Nt32Pkg.dec
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  HobLib
  PeimEntryPoint
  DebugLib
  PcdLib  

[Ppis]
  gNtFwhPpiGuid                                 # PPI ALWAYS_CONSUMED


[FixedPcd.common]
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashFvRecoveryBase
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashFvRecoverySize
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashNvStorageEventLogBase
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashNvStorageEventLogSize
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashNvStorageVariableBase
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashNvStorageFtwSpareBase

  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize

[depex]
  gNtFwhPpiGuid AND gEfiPeiMemoryDiscoveredPpiGuid