UEFI USB 功能协议

重要

本节中的某些信息仅适用于Windows 10 移动版和某些处理器体系结构。

USB 函数协议在 UEFI 环境中定义通用和轻型 USB 传输。 此协议由闪存工具、USB 大容量存储模式和其他工具使用,这些工具需要在启动到 UEFI 环境和主计算机的设备之间进行双向通信。

EFI_USBFN_IO_PROTOCOL

与其他 UEFI 设备驱动程序一样,USB 函数驱动程序的入口点将EFI_DRIVER_BINDING_PROTOCOL附加到EFI_USBFN_IO_PROTOCOL驱动程序的图像句柄

驱动程序绑定协议包含三个服务: 支持启动停止支持的函数必须测试才能查看此驱动程序是否支持给定的控制器。 Start 函数必须在需要时向 USB 控制器供电,初始化硬件和内部数据结构,然后返回。 此函数不得激活端口。 停止函数必须根据需要重置运行/停止位并关闭 USB 控制器来禁用设备。

GUID

// {32D2963A-FE5D-4f30-B633-6E5DC55803CC}
#define EFI_USBFN_IO_PROTOCOL_GUID \
  {0x32d2963a, 0xfe5d, 0x4f30, 0xb6, 0x33, 0x6e, 0x5d, 0xc5, \
   0x58, 0x3, 0xcc };

修订号

#define EFI_USBFN_IO_PROTOCOL_REVISION   0x00010002

协议接口结构

typedef struct _EFI_USBFN_IO_PROTOCOL 
{
  UINT32                                      Revision;
  EFI_USBFN_IO_DETECT_PORT                    DetectPort;
  EFI_USBFN_IO_CONFIGURE_ENABLE_ENDPOINTS     ConfigureEnableEndpoints;
  EFI_USBFN_IO_GET_ENDPOINT_MAXPACKET_SIZE    GetEndpointMaxPacketSize;
  EFI_USBFN_IO_GET_DEVICE_INFO                GetDeviceInfo;
  EFI_USBFN_IO_GET_VENDOR_ID_PRODUCT_ID       GetVendorIdProductId;
  EFI_USBFN_IO_ABORT_TRANSFER                 AbortTransfer;
  EFI_USBFN_IO_GET_ENDPOINT_STALL_STATE       GetEndpointStallState; 
  EFI_USBFN_IO_SET_ENDPOINT_STALL_STATE       SetEndpointStallState;
  EFI_USBFN_IO_EVENTHANDLER                   EventHandler;
  EFI_USBFN_IO_TRANSFER                       Transfer;
  EFI_USBFN_IO_GET_MAXTRANSFER_SIZE           GetMaxTransferSize;
  EFI_USBFN_IO_ALLOCATE_TRANSFER_BUFFER       AllocateTransferBuffer;
  EFI_USBFN_IO_FREE_TRANSFER_BUFFER           FreeTransferBuffer;
  EFI_USBFN_IO_START_CONTROLLER               StartController;
  EFI_USBFN_IO_STOP_CONTROLLER                StopController;
  EFI_USBFN_IO_SET_ENDPOINT_POLICY            SetEndpointPolicy;
  EFI_USBFN_IO_GET_ENDPOINT_POLICY            GetEndpointPolicy;
  EFI_USBFN_IO_CONFIGURE_ENABLE_ENDPOINTS_EX  ConfigureEnableEndpointsEx;
} EFI_USBFN_IO_PROTOCOL;

成员

修订
EFI_USBFN_IO_PROTOCOL所遵循的修订。 所有未来的修订都必须向后兼容。 如果将来的版本不向后兼容,则必须使用不同的 GUID。

DetectPort
返回有关 USB 端口类型的信息。 请参阅 EFI_USBFN_IO_PROTOCOL。DetectPort

ConfigureEnableEndpoints
基于提供的设备和配置描述符初始化所有终结点。 通过设置运行/停止位来启用设备。 请参阅 EFI_USBFN_IO_PROTOCOL。ConfigureEnableEndpoints

GetEndpointMaxPacketSize
返回指定终结点的最大数据包大小。 请参阅 EFI_USBFN_IO_PROTOCOL。GetEndpointMaxPacketSize

GetDeviceInfo
根据提供的标识符作为 Unicode 字符串返回特定于设备的信息。 请参阅 EFI_USBFN_IO_PROTOCOL。GetDeviceInfo

GetVendorIdProductId
返回设备的供应商 ID 和产品 ID。 请参阅 EFI_USBFN_IO_PROTOCOL。GetVendorIdProductId

AbortTransfer
在指定的终结点上中止传输。 请参阅 EFI_USBFN_IO_PROTOCOL。AbortTransfer

GetEndpointStallState
返回指定终结点上的停止状态。 请参阅 EFI_USBFN_IO_PROTOCOL。GetEndpointStallState

SetEndpointStallS
设置或清除指定终结点上的停止状态。 请参阅 EFI_USBFN_IO_PROTOCOL。SetEndpointStallState

EventHandler
重复调用此函数以接收 USB 总线状态的更新、接收、传输终结点上的完整事件,并在终结点 0 上设置数据包。 请参阅 EFI_USBFN_IO_PROTOCOL。EventHandler

转移
此函数根据指定的方向处理在指定终结点上的主机上传输数据或从主机传输数据。 请参阅 EFI_USBFN_IO_PROTOCOL。传输

GetMaxTransferSize
支持的最大传输大小(以字节为单位)。 请参阅 EFI_USBFN_IO_PROTOCOL。GetMaxTransferSize

AllocateTransferBuffer
分配满足控制器要求的指定大小的传输缓冲区。 请参阅 EFI_USBFN_IO_PROTOCOL。AllocateTransferBuffer

FreeTransferBuffer
取消分配 由 AllocateTransferBuffer 函数为传输缓冲区分配的内存。 请参阅 EFI_USBFN_IO_PROTOCOL。FreeTransferBuffer

StartController
根据需要为 USB 控制器提供电源,并初始化硬件和内部数据结构。 请参阅 EFI_USBFN_IO_PROTOCOL。StartController。 从协议的修订版0x00010001开始,此函数可用。

StopController
根据需要重置运行/停止位并关闭 USB 控制器来禁用设备。 请参阅 EFI_USBFN_IO_PROTOCOL。StopController。 从协议的修订版0x00010001开始,此函数可用。

SetEndpointPolicy
设置指定非控制终结点的配置策略。 请参阅 EFI_USBFN_IO_PROTOCOL。SetEndpointPolicy。 从协议的修订版0x00010001开始,此函数可用。

GetEndpointPolicy
检索指定非控制终结点的配置策略。 请参阅 EFI_USBFN_IO_PROTOCOL。GetEndpointPolicy。 从协议的修订版0x00010001开始,此函数可用。

ConfigureEnableEndpointsEx
通过选择硬件支持的最快速度(最高为 SuperSpeed)的设备和配置描述符来初始化所有终结点。 通过设置运行/停止位来启用设备。 请参阅 EFI_USBFN_IO_PROTOCOL。ConfigureEnableEndpointsEx。 从协议的修订版0x00010002开始,此函数可用。

注解

下表列出了EFI_USBFN_IO_PROTOCOL协议的每个版本中支持的函数。

修订0x00010002 修订0x00010001 修订0x00010000
ConfigureEnableEndpointsEx DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
EventHandler
转移
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer
StartController
StopController
SetEndpointPolicy
GetEndpointPolicy
DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
EventHandler
转移
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer