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