将来の 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_INFOの IoRingVersion フィールドを調べて、サポートされている操作とフラグを決定する I/O リングの API バージョンを決定する必要があります。 アプリケーションは、I/O リングの作成に使用したバージョンを認識している必要があるため、実行時にサポートされていないフラグを提供しないでください。 |
注釈
この関数を使用すると、カーネルの実装で検証と内部マッピングを 1 回だけ実行できるため、各 I/O 操作のオーバーヘッドを回避できます。 送信キュー内の後続のエントリは、配列に整数インデックスを使用して、この関数に登録されているバッファーを参照できます。 以前の登録が存在する場合は、以前の登録が完全に置き換えられます。 アドレスが NULL で長さが 0 の配列内のエントリはスパース エントリであり、使用されません。 これにより、以前に登録されたバッファーの 1 つ以上を解放できます。
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows ビルド 22000 |
| サポートされている最小のサーバー | Windows ビルド 22000 |
| Header | ioringapi.h |
| Library | kernel32。Lib |