次の方法で共有


BuildIoRingRegisterBuffers 関数 (ioringapi.h)

将来の I/O リング操作のために、バッファーの配列をシステムに登録します。

構文

HRESULT BuildIoRingRegisterBuffers(
  HIORING                     ioRing,
  UINT32                      count,
  IORING_BUFFER_INFO const [] buffers,
  UINT_PTR                    userData
);

パラメーター

ioRing

バッファーが登録されている I/O リングへのハンドルを表す HIORING

count

buffers パラメーターに指定されたバッファーの数を指定する UINT32。

buffers

登録するバッファーを表す IORING_BUFFER_INFO 構造体の配列。

userData

登録操作を識別するUINT_PTR値。 BuildIoRingCancelRequest の呼び出しで操作を取り消すときに、この値を指定します。 アプリが操作のキャンセル動作を実装する場合、 userData 値は一意である必要があります。 それ以外の場合、値はシステムによって不透明として扱われ、0 を含む任意の値を指定できます。

戻り値

次を含む HRESULT を返しますが、これらに限定されません。

価値 Description
S_OK Success
IORING_E_SUBMISSION_QUEUE_FULL 送信キューがいっぱいで、追加のエントリをビルドできません。 アプリケーションは、既存のエントリを送信し、一部のエントリが完了するのを待ってから、キューにさらに操作を追加する必要があります。
IORING_E_UNKNOWN_REQUIRED_FLAG アプリケーションは、実装に認識されない必要なフラグを提供しました。 ライブラリ コードでは、GetIoRingInfo の呼び出しから取得したIORING_INFOIoRingVersion フィールドを調べて、サポートされている操作とフラグを決定する I/O リングの API バージョンを決定する必要があります。 アプリケーションは、I/O リングの作成に使用したバージョンを認識している必要があるため、実行時にサポートされていないフラグを提供しないでください。

注釈

この関数を使用すると、カーネルの実装で検証と内部マッピングを 1 回だけ実行できるため、各 I/O 操作のオーバーヘッドを回避できます。 送信キュー内の後続のエントリは、配列に整数インデックスを使用して、この関数に登録されているバッファーを参照できます。 以前の登録が存在する場合は、以前の登録が完全に置き換えられます。 アドレスが NULL で長さが 0 の配列内のエントリはスパース エントリであり、使用されません。 これにより、以前に登録されたバッファーの 1 つ以上を解放できます。

Requirements

Requirement 価値
サポートされる最小クライアント Windows ビルド 22000
サポートされている最小のサーバー Windows ビルド 22000
Header ioringapi.h
Library kernel32。Lib