## @file
# Gop Driver
#
# GOP is short hand for UEFI Graphics Output protocol.
#  This file is a verision of GopIo the uses WinNtThunk system calls as an IO
#  abstraction. For a PCI device WinNtIo would be replaced with
#  a PCI IO abstraction that abstracted a specific PCI device.
# 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                      = WinNtGopDxe
  FILE_GUID                      = 29b3c4c6-e5aa-49e4-8ce0-2772f782ddc2
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeWinNtGop

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#
#  DRIVER_BINDING                =  gWinNtGopDriverBinding                       
#  COMPONENT_NAME                =  gWinNtGopComponentName                       
#

[Sources]
  WinNtGopDriver.c
  ComponentName.c
  WinNtGop.h
  WinNtGopInput.c
  WinNtGopScreen.c

[Packages]
  MdePkg/MdePkg.dec
  Nt32Pkg/Nt32Pkg.dec


[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  BaseMemoryLib
  UefiLib
  UefiDriverEntryPoint
  BaseLib
  DebugLib


[Guids]
  gEfiEventExitBootServicesGuid                 # SOMETIMES_CONSUMED  Create Event: EVENT_GROUP_GUID
  gEfiWinNtGopGuid                              # ALWAYS_CONSUMED

[Protocols]
  gEfiGraphicsOutputProtocolGuid                # PROTOCOL BY_START
  gEfiSimpleTextInProtocolGuid                  # PROTOCOL BY_START
  gEfiSimpleTextInputExProtocolGuid             # PROTOCOL BY_START
  gEfiWinNtIoProtocolGuid                       # PROTOCOL TO_START
