## @file
# Win NT Bus driver
#
# This following section documents the envirnoment variables for the Win NT
#  build. These variables are used to define the (virtual) hardware
#  configuration of the NT environment
# Copyright (c) 2006 - 2010, 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                      = WinNtBusDriverDxe
  FILE_GUID                      = BD7E9A27-D6C5-416a-B245-5F507D95B2BD
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeWinNtBusDriver

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#
#  DRIVER_BINDING                =  gWinNtBusDriverBinding
#  COMPONENT_NAME                =  gWinNtBusDriverComponentName
#

[Sources]
  ComponentName.c
  WinNtBusDriver.c
  WinNtBusDriver.h


[Packages]
  MdePkg/MdePkg.dec
  Nt32Pkg/Nt32Pkg.dec


[LibraryClasses]
  MemoryAllocationLib
  DevicePathLib
  UefiBootServicesTableLib
  BaseMemoryLib
  PcdLib
  UefiLib
  UefiDriverEntryPoint
  BaseLib
  DebugLib


[Guids]
  gEfiWinNtConsoleGuid                          # ALWAYS_CONSUMED
  gEfiWinNtGopGuid                              # ALWAYS_CONSUMED
  gEfiWinNtSerialPortGuid                       # ALWAYS_CONSUMED
  gEfiWinNtFileSystemGuid                       # ALWAYS_CONSUMED
  gEfiWinNtPhysicalDisksGuid                    # ALWAYS_CONSUMED
  gEfiWinNtVirtualDisksGuid                     # ALWAYS_CONSUMED


[Protocols]
  gWinNtBusDriverGuid                           # PROTOCOL BY_START
  gEfiDevicePathProtocolGuid                    # PROTOCOL BY_START
  gEfiWinNtThunkProtocolGuid                    # PROTOCOL TO_START
  gEfiWinNtIoProtocolGuid                       # PROTOCOL BY_START


[Pcd]
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtMemorySize
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtPhysicalDisk
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtVirtualDisk
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtFileSystem
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtSerialPort
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtGop
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtUga
  gEfiNt32PkgTokenSpaceGuid.PcdWinNtConsole

