UEFI USB 函式通訊協定

重要

本節中的某些資訊僅適用于Windows 10 行動裝置版和特定處理器架構。

USB 函式通訊協定會在 UEFI 環境中定義泛型和輕量型 USB 傳輸。 此通訊協定是透過快閃工具、USB 大量儲存模式,以及需要開機到 UEFI 環境和主機電腦之裝置之間雙向通訊的其他工具使用。

EFI_USBFN_IO_PROTOCOL

就像其他 UEFI 設備磁碟機一樣,USB 函式驅動程式的進入點會 連結EFI_DRIVER_BINDING_PROTOCOLEFI_USBFN_IO_PROTOCOL 驅動程式的映射控制碼

驅動程式系結通訊協定包含三個服務: 支援啟動停止支援的函式必須測試,以查看此驅動程式是否支援指定的控制器。 Start函式必須視需要提供電源給 USB 控制器、初始化硬體和內部資料結構,然後傳回。 此函式不得啟動埠。 Stop函式必須重設執行/停止位,並視需要關閉 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
傳回裝置的 vendor-id 和 product-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
選取具有最高速度的裝置和組態描述元, (硬體支援的超) ,來初始化所有端點。 藉由設定執行/停止位來啟用裝置。 請參閱 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