EventHandler 関数は、USB バス状態の更新プログラムの受信、エンドポイントでの状態の変更の送受信、エンドポイント 0 でのパケットの設定を行うために繰り返し呼び出されます。
構文
typedef
EFI_STATUS
(EFIAPI * EFI_USBFN_IO_EVENTHANDLER) (
IN EFI_USBFN_IO_PROTOCOL *This,
OUT EFI_USBFN_MESSAGE *Message,
IN OUT UINTN *PayloadSize,
OUT EFI_USBFN_MESSAGE_PAYLOAD *Payload
);
パラメーター
This
EFI_USBFN_IO_PROTOCOL インスタンスへのポインタ。
メッセージ
この通知を開始したイベントを示す EFI_USBFN_MESSAGE 値。
PayloadSize
入力時にペイロードが示すメモリのサイズ。 出力時にペイロードで返されるデータ量。
Payload
現在のメッセージの追加ペイロードを返す EFI_USBFN_MESSAGE_PAYLOAD インスタンスへのポインタ。
戻り値
この関数は次の値を返します。
リターン コード | 説明 |
---|---|
EFI_SUCCESS | 関数が正常に返されました。 |
EFI_INVALID_PARAMETER | パラメーターが無効です。 |
EFI_DEVICE_ERROR | 物理デバイスからエラーが報告されました。 |
EFI_NOT_READY | 物理デバイスがビジー状態であるか、この要求を処理する準備ができていません。 |
EFI_BUFFER_TOO_SMALL | 指定されたバッファーは、メッセージ ペイロードを保持する十分な大きさではありません。 |
解説
クラス ドライバーは、転送状態およびさまざまなエンドポイントで転送されたバイト数に関する更新プログラムを受信するために、EventHandler を繰り返し呼び出す必要があります。 詳しくは、UEFI シーケンス図を参照してください。
いくつかのメッセージには、指定されたバッファーで返されるペイロードが関連付けられています。 次の表は、さまざまなメッセージとそのペイロードを示しています。
メッセージ | Payload | 説明 |
---|---|---|
EfiUsbMsgSetupPacket | EFI_USB_DEVICE_REQUEST | SETUP パケットが受信されました。 |
EfiUsbMsgEndpointStatusChangedRx | EFI_USBFN_TRANSFER_RESULT | 要求されたデータの一部がホストに送信されました。 クラス ドライバーは、残りのデータを再送信する必要があるかを判断します。 EFI_USBFN_IO_PROTOCOL.Transfer に指定されるバッファは、ペイロードのバッファフィールドと同じであることが必要です。 |
EfiUsbMsgEndpointStatusChangedTx | EFI_USBFN_TRANSFER_RESULT | 要求されたデータの一部がホストから受信されました。 クラス ドライバーは残りのデータを待つ必要があるかを判断します。 EFI_USBFN_IO_PROTOCOL.Transfer に指定されるバッファは、ペイロードのバッファフィールドと同じであることが必要です。 |
EfiUsbMsgBusEventReset | なし | RESET バス イベントが通知されました。 |
EfiUsbMsgBusEventDetach | なし | DETACH バス イベントが通知されました。 |
EfiUsbMsgBusEventAttach | なし | ATTACH バス イベントが通知されました。 |
EfiUsbMsgBusEventSuspend | なし | SUSPEND バス イベントが通知されました。 |
EfiUsbMsgBusEventResume | なし | RESUME バス イベントが通知されました。 |
EfiUsbMsgBusEventSpeed | EFI_USB_BUS_SPEED | バス速度の更新が通知されました。 |
要件
ヘッダー: ユーザー生成