## @file
# USB Mass Storage Driver that manages USB mass storage devices and produces Block I/O Protocol.
#
# The USB mass storage class is specified in two layers: the bottom layer
# is the transportation protocol. The top layer is the command set.
# The transportation layer provides the transportation of the command, data and result.
# The command set defines the command, data and result.
# The Bulk-Only-Transport and Control/Bulk/Interrupt transport are two transportation protocol.
# USB mass storage class adopts various industrial standard as its command set.
# This module refers to following specifications:
# 1. USB Mass Storage Specification for Bootability, Revision 1.0
# 2. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport, Revision 1.1
# 3. USB Mass Storage Class Bulk-Only Transport, Revision 1.0.
# 4. UEFI Specification, v2.1
#
# Copyright (c) 2006 - 2018, 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                      = UsbMassStorageDxe
  MODULE_UNI_FILE                = UsbMassStorageDxe.uni
  FILE_GUID                      = 9FB4B4A7-42C0-4bcd-8540-9BCC6711F83E
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = USBMassStorageEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gUSBMassDriverBinding
#  COMPONENT_NAME                =  gUsbMassStorageComponentName
#  COMPONENT_NAME2               =  gUsbMassStorageComponentName2
#

[Sources]
  UsbMassBoot.h
  UsbMassImpl.h
  UsbMassBot.h
  UsbMassBot.c
  ComponentName.c
  UsbMassImpl.c
  UsbMassBoot.c
  UsbMassCbi.h
  UsbMass.h
  UsbMassCbi.c
  UsbMassDiskInfo.h
  UsbMassDiskInfo.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  BaseLib
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  BaseMemoryLib
  DebugLib
  DevicePathLib


[Protocols]
  gEfiUsbIoProtocolGuid                         ## TO_START
  gEfiDevicePathProtocolGuid                    ## TO_START
  gEfiBlockIoProtocolGuid                       ## BY_START
  gEfiDiskInfoProtocolGuid                      ## BY_START

# [Event]
# EVENT_TYPE_RELATIVE_TIMER        ## CONSUMES
#

[UserExtensions.TianoCore."ExtraFiles"]
  UsbMassStorageDxeExtra.uni
