UEFI USB 関数プロトコル
重要
このセクションの一部の情報は、Windows 10 Mobileおよび特定のプロセッサ アーキテクチャにのみ適用される場合があります。
USB 関数プロトコルは、UEFI 環境で汎用で軽量の USB トランスポートを定義します。 このプロトコルは、フラッシュ ツール、USB 大容量ストレージ モード、および UEFI 環境で起動されるデバイスとホスト コンピューター間の双方向通信を必要とするその他のツールで使用されます。
EFI_USBFN_IO_PROTOCOL
他の UEFI デバイス ドライバーと同様に、USB ファンクション ドライバーのエントリ ポイントは EFI_DRIVER_BINDING_PROTOCOL を EFI_USBFN_IO_PROTOCOL ドライバーのイメージ ハンドルに接続します。
ドライバー バインディング プロトコルには、サポート、開始、および 停止の 3 つのサービスが含まれています。 サポートされている関数は、このドライバーが特定のコントローラーをサポートしているかどうかをテストする必要があります。 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.ConfigureEnableEndpointを参照してください。
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.Transferを参照してください。
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 |