LPFN_RIORESIZECOMPLETIONQUEUE コールバック関数 (mswsock.h)

RIOResizeCompletionQueue 関数は、Winsock 登録済み I/O 拡張機能で使用するために、I/O 完了キューのサイズを大きくするか小さくします。

構文

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

BOOL LpfnRioresizecompletionqueue(
  RIO_CQ CQ,
  DWORD QueueSize
)
{...}

パラメーター

CQ

サイズ変更する既存の I/O 完了キューを識別する記述子。

QueueSize

戻り値

エラーが発生しない場合、 RIOResizeCompletionQueue 関数は TRUE を返します。 それ 以外の場合 は FALSE の値が返され、 WSAGetLastError 関数を呼び出すことで特定のエラー コードを取得できます。

リターン コード 説明
WSAEFAULT
呼び出しでポインター引数を使用しようとしたときに、システムにより、無効なポインター アドレスが検出されました。 このエラーは、 CQ パラメーターで指定された完了キューに無効なポインターが含まれている場合に返されます。
WSAEINVAL
無効なパラメーターが関数に渡されました。 このエラーは、 CQ パラメーターが無効な場合 (たとえば、RIO_INVALID_CQ) に返されます。 このエラーは、 QueueSize パラメーターで指定されたキューのサイズが RIO_CQ_MAX_SIZEを超える場合にも返されます。
WSAENOBUFS
十分なメモリを割り当てませんでした。 QueueSize パラメーターで指定されたキューにメモリを割り当てられなかった場合、このエラーが返されます。
WSAETOOMANYREFS
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.1Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。

スレッド セーフ

RIODequeueCompletion 関数または RIOResizeCompletionQueue 関数を使用して複数のスレッドが同じRIO_CQにアクセスしようとすると、クリティカル セクション、スリム リーダー ライター ロック、または同様の相互除外メカニズムによってアクセスを調整する必要があります。 完了キューが共有されていない場合、相互の除外は必要ありません。

要件

要件
Header mswsock.h