次の方法で共有


EFI_USBFN_IO_PROTOCOL.EventHandler

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 バス速度の更新が通知されました。

要件

ヘッダー: ユーザー生成