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 控制器、初始化硬體和內部資料結構,然後傳回。 此函式不得啟動埠。 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 |