## @file
# NT Emulation Reset Architectural Protocol Driver as defined in TIANO
#
# This Reset module simulates system reset by process exit on NT.
# 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                      = Reset
  FILE_GUID                      = BA929954-35B0-4dd3-90CD-9634BD7E1CF1
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeNtReset

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  reset.c

[Packages]
  MdePkg/MdePkg.dec
  Nt32Pkg/Nt32Pkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  WinNtLib
  UefiDriverEntryPoint
  DebugLib

[Protocols]
  gEfiResetArchProtocolGuid                     # PROTOCOL ALWAYS_PRODUCED

[Depex]
  TRUE

