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