次の方法で共有


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

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

構文

LPFN_RIORESIZEREQUESTQUEUE LpfnRioresizerequestqueue;

BOOL LpfnRioresizerequestqueue(
  RIO_RQ RQ,
  DWORD MaxOutstandingReceive,
  DWORD MaxOutstandingSend
)
{...}

パラメーター

RQ

サイズ変更する既存の登録済み I/O ソケット記述子 (要求キュー) を識別する記述子。

MaxOutstandingReceive

ソケットで許可されている未処理の送信の最大数。 この値は、元の数値より大きいか小さくすることができます。

このパラメーターは、通常、ほとんどのアプリケーションでは少数です。

MaxOutstandingSend

ソケットで許可される未処理の受信の最大数。 この値は、元の数値より大きいか小さくすることができます。

戻り値

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

リターン コード 説明
WSAEINVAL
無効なパラメーターが関数に渡されました。 このエラーは、 RQ パラメーターが無効な場合に返されます (たとえば、RIO_INVALID_RQ)。 このエラーは、 MaxOutstandingReceive パラメーターと MaxOutstandingSend パラメーターの両方が 0 の場合にも返されます。
WSAENOBUFS
十分なメモリを割り当てませんでした。 サイズ変更された要求キューにメモリを割り当てられなかった場合、このエラーが返されます。
WSAETOOMANYREFS
要求キューを参照する操作が多すぎます。 現時点では、この要求キューのサイズを小さくすることはできません。

注釈

RIOResizeRequestQueue 関数は、要求キューのサイズを大きくまたは小さくします。 要求キューに既にエントリが含まれている場合、それらのエントリは新しい要求キューにコピーされます。

要求キューには、現在のエントリ数 (要求キューでの送受信の数) に依存する必要な最小サイズがあります。 アプリケーションが RIOResizeRequestQueue 関数を呼び出し、既存のエントリの数に対してキューを小さく設定しようとすると、呼び出しは失敗し、キューのサイズは変更されません。

注意

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

要件

要件
Header mswsock.h