## @file
# Block Io driver
#
# Produce block IO abstractions for real devices on your PC using Win32 APIs.
#  The configuration of what devices to mount or emulate comes from NT
#  environment variables. The variables must be visible to the Microsoft*
#  Developer Studio for them to work.
# 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                      = WinNtBlockIo
  FILE_GUID                      = F479E147-A125-11d4-BCFC-0080C73C8881
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeWinNtBlockIo

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#
#  DRIVER_BINDING                =  gWinNtBlockIoDriverBinding                   
#  COMPONENT_NAME                =  gWinNtBlockIoComponentName                   
#  DRIVER_DIAG                   =  gWinNtBlockIoDriverDiagnostics               
#

[Sources]
  DriverDiagnostics.c
  DriverConfiguration.c
  ComponentName.c
  WinNtBlockIo.c
  WinNtBlockIo.h


[Packages]
  MdePkg/MdePkg.dec
  Nt32Pkg/Nt32Pkg.dec


[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  BaseMemoryLib
  UefiLib
  UefiDriverEntryPoint
  BaseLib
  DebugLib


[Guids]
  gEfiWinNtPhysicalDisksGuid                    # SOMETIMES_CONSUMED
  gEfiWinNtVirtualDisksGuid                     # ALWAYS_CONSUMED


[Protocols]
  gEfiBlockIoProtocolGuid                       # PROTOCOL BY_START
  gEfiWinNtIoProtocolGuid                       # PROTOCOL TO_START

