Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPFN_RIORESIZEREQUESTQUEUE

LPFN_RIORESIZEREQUESTQUEUE

コールバック

シグネチャ

BOOL LPFN_RIORESIZEREQUESTQUEUE(
    RIO_RQ RQ,
    DWORD MaxOutstandingReceive,
    DWORD MaxOutstandingSend
);

パラメーター

フィールド型説明
RQRIO_RQサイズ変更する既存の登録された I/O ソケット記述子 (リクエストキュー) を識別する記述子。
MaxOutstandingReceiveDWORD

ソケットで許可される未完了の送信の最大数。この値は元の数より大きくても小さくてもかまいません。

このパラメーターは、ほとんどのアプリケーションでは通常小さな値になります。

MaxOutstandingSendDWORDソケットで許可される未完了の受信の最大数。この値は元の数より大きくても小さくてもかまいません。

公式ドキュメント

RIOResizeRequestQueue 関数は、Winsock の登録された I/O 拡張機能で使用するリクエストキューを、より大きく、またはより小さくサイズ変更します。

戻り値

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

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

解説(Remarks)

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.1 および Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストアアプリでサポートされます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)