UEFI USB 関数プロトコル

重要

このセクションの一部の情報は、Windows 10 Mobileおよび特定のプロセッサ アーキテクチャにのみ適用される場合があります。

USB 関数プロトコルは、UEFI 環境で汎用で軽量の USB トランスポートを定義します。 このプロトコルは、フラッシュ ツール、USB 大容量ストレージ モード、および UEFI 環境で起動されるデバイスとホスト コンピューター間の双方向通信を必要とするその他のツールで使用されます。

EFI_USBFN_IO_PROTOCOL

他の UEFI デバイス ドライバーと同様に、USB ファンクション ドライバーのエントリ ポイントは EFI_DRIVER_BINDING_PROTOCOLEFI_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