## @file
# Component description file for WinNtAutoScan module
#
# This module abstracts memory auto-scan in a Windows NT environment.
# Copyright (c) 2006 - 2010, 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                      = WinNtAutoScan
  FILE_GUID                      = BE0FEABA-3443-4919-9F3A-2D4216329EA9
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = PeimInitializeWinNtAutoScan

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  WinNtAutoScan.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  Nt32Pkg/Nt32Pkg.dec


[LibraryClasses]
  HobLib
  PeimEntryPoint
  DebugLib
  PeiServicesLib

[Ppis]
  gPeiNtAutoScanPpiGuid                         # PPI ALWAYS_CONSUMED

[depex]
  gPeiNtAutoScanPpiGuid AND gEfiPeiMasterBootModePpiGuid
