## @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. 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

