次の方法で共有


EFI_USBFN_IO_PROTOCOL.Transfer

Transfer 関数は、指定されたエンドポイントのホストとの間でのデータ転送を処理します。

方向 説明
EfiUsbEndpointDirectionDeviceTx 指定するエンドポイントで送信転送を開始し、すぐに返します。
EfiUsbEndpointDirectionDeviceRx 指定するエンドポイントで受信転送を開始し、すぐに使用可能なデータを返します。

構文

typedef
EFI_STATUS
(EFIAPI *EFI_USBFN_IO_TRANSFER) (
  IN EFI_USBFN_IO_PROTOCOL         *This,
  IN UINT8                         EndpointIndex,
  IN EFI_USBFN_ENDPOINT_DIRECTION  Direction,
  IN OUT UINTN                     *BufferSize,
  IN OUT VOID                      *Buffer
  );

パラメーター

This
EFI_USBFN_IO_PROTOCOL インスタンスへのポインタ。

EndpointIndex
TX または RX 転送を実行する必要があるエンドポイントを示します。

方向
エンドポイントの方向。 詳細については、EFI_USBFN_ENDPOINT_DIRECTION を参照してください。

BufferSize
方向が EfiUsbEndpointDirectionDeviceRx の場合: 入力時のバッファーのサイズ (バイト単位)。 出力時にバッファーで返されるデータ量 (バイト単位)。 方向が EfiUsbEndpointDirectionDeviceTx の場合: 入力時のバッファーのサイズ (バイト単位)。 出力時に実際に送信されたデータ量 (バイト単位)。

Buffer
方向が EfiUsbEndpointDirectionDeviceRx の場合、受信したデータを返すバッファー。 方向が EfiUsbEndpointDirectionDeviceTx の場合: 転送するデータを含むバッファー。

このバッファーは、AllocateTransferBuffer 関数と FreeTransferBuffer 関数を使用して割り当てられ、解放されます。 この関数の呼び出し元は、EfiUsbMsgEndpointStatusChangedRx または EfiUsbMsgEndpointStatusChangedTx メッセージがメッセージ ペイロードの一部として転送バッファーのアドレスと共に受信されるまで、バッファーを解放または再利用できません。 さまざまなメッセージとそのペイロードについての詳細は、EFI_USBFN_IO_PROTOCOL.EventHandler を参照してください。

戻り値

この関数は、次のいずれかの値を返します。

リターン コード 説明
EFI_SUCCESS 関数が正常に返されました
EFI_INVALID_PARAMETER パラメーターが無効です
EFI_DEVICE_ERROR 物理デバイスでエラーが報告されました。
EFI_NOT_READY 物理デバイスがビジー状態であるか、この要求を処理する準備ができていません

解説

クラス ドライバーは転送状態と複数のエンドポイントでえ転送されたバイト数の更新を受信するために、EFI_USBFN_IO_PROTOCOL.EventHandler を繰り返し呼び出す必要があります。 転送状態を更新したら、EFI_USBFN_TRANSFER_RESULT 構造体のバッファ フィールドをこのメソッドで提供されたバッファ ポインターで初期化する必要があります。 指定した方向がエンドポイントに対して正しくない場合、この関数は EFI_INVALID_PARAMETER リターン コードで失敗します。

呼び出しシーケンスの概要については、UEFI シーケンス図を参照します。

指定した方向がエンドポイントに対して正しくない場合、この関数は EFI_INVALID_PARAMETER リターン コードで失敗します。

要件

ヘッダー: ユーザーが生成しました