## @file
# Simple filesystem driver
#
# Produce Simple File System abstractions for directories 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                      = WinNtSimpleFileSystemDxe
  FILE_GUID                      = 9C25E18B-76BA-43da-A132-DBB0997CEFEF
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeWinNtSimpleFileSystem

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#
#  DRIVER_BINDING                =  gWinNtSimpleFileSystemDriverBinding          
#  COMPONENT_NAME                =  gWinNtSimpleFileSystemComponentName          
#

[Sources]
  ComponentName.c
  WinNtSimpleFileSystem.c
  WinNtSimpleFileSystem.h

[Packages]
  MdePkg/MdePkg.dec
  Nt32Pkg/Nt32Pkg.dec


[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  BaseMemoryLib
  UefiLib
  UefiDriverEntryPoint
  BaseLib
  DebugLib


[Guids]
  gEfiFileSystemVolumeLabelInfoIdGuid           # SOMETIMES_CONSUMED
  gEfiFileInfoGuid                              # SOMETIMES_CONSUMED
  gEfiFileSystemInfoGuid                        # SOMETIMES_CONSUMED
  gEfiWinNtFileSystemGuid                       # ALWAYS_CONSUMED


[Protocols]
  gEfiSimpleFileSystemProtocolGuid              # PROTOCOL BY_START
  gEfiWinNtIoProtocolGuid                       # PROTOCOL TO_START

