LPFN_RIORESIZECOMPLETIONQUEUE
コールバックシグネチャ
BOOL LPFN_RIORESIZECOMPLETIONQUEUE(
RIO_CQ CQ,
DWORD QueueSize
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| CQ | RIO_CQ | サイズを変更する既存の I/O 完了キューを識別する記述子です。 |
| QueueSize | DWORD |
公式ドキュメント
RIOResizeCompletionQueue 関数は、Winsock 登録 I/O 拡張機能で使用する I/O 完了キューのサイズを、より大きく、またはより小さく変更します。
戻り値
エラーが発生しなかった場合、RIOResizeCompletionQueue 関数は TRUE を返します。それ以外の場合は FALSE が返され、WSAGetLastError 関数を呼び出すことで固有のエラーコードを取得できます。
| 戻り値 | 説明 |
|---|---|
| 呼び出しでポインター引数を使用しようとした際に、システムが無効なポインターアドレスを検出しました。CQ パラメーターで指定された完了キューに無効なポインターが含まれている場合に、このエラーが返されます。 |
|
| 無効なパラメーターが関数に渡されました。CQ パラメーターが有効でない場合 (RIO_INVALID_CQ など) に、このエラーが返されます。また、QueueSize パラメーターで指定されたキューのサイズが RIO_CQ_MAX_SIZE より大きい場合にも、このエラーが返されます。 |
|
| 十分なメモリを割り当てられませんでした。QueueSize パラメーターで指定されたキューのためのメモリを割り当てられなかった場合に、このエラーが返されます。 |
|
| I/O 完了キューを参照している操作が多すぎます。現時点では、この I/O 完了キューのサイズを小さく変更することはできません。 |
RIOResizeCompletionQueue 関数は、I/O 完了キューのサイズをより大きく、またはより小さく変更します。I/O 完了キューに既に完了項目が含まれている場合、それらの完了項目は新しい完了キューにコピーされます。
I/O 完了キューには必要な最小サイズがあり、これはその完了キューに関連付けられた要求キューの数、および要求キュー上の送信と受信の数に依存します。アプリケーションが RIOResizeCompletionQueue 関数を呼び出し、I/O 完了キュー内に存在する完了項目の数に対して小さすぎるサイズを設定しようとした場合、呼び出しは失敗し、キューのサイズは変更されません。
RIOResizeCompletionQueue 関数への関数ポインターは、SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER オペコードを指定して WSAIoctl 関数を呼び出すことにより、実行時に取得する必要があります。WSAIoctl 関数に渡す入力バッファーには、Winsock 登録 I/O 拡張関数を識別する値を持つグローバル一意識別子 (GUID) である WSAID_MULTIPLE_RIO を格納する必要があります。成功すると、WSAIoctl 関数が返す出力には、Winsock 登録 I/O 拡張関数へのポインターを格納した RIO_EXTENSION_FUNCTION_TABLE 構造体へのポインターが含まれます。SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL は Ws2def.h ヘッダーファイルで定義されています。WSAID_MULTIPLE_RIO GUID は Mswsock.h ヘッダーファイルで定義されています。
Windows Phone 8: この関数は、Windows Phone 8 以降の Windows Phone ストアアプリでサポートされます。
Windows 8.1 および Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストアアプリでサポートされます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)