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 函式來擷取特定的錯誤碼。

傳回碼 Description
WSAEINVAL
無效的參數已傳遞至 函式。 如果 RQ 參數無效, (RIO_INVALID_RQ 傳回此錯誤,例如) 。 如果 MaxOutstandingReceiveMaxOutstandingSend 參數都是零,也會傳回此錯誤。
WSAENOBUFS
無法配置足夠的記憶體。 如果無法為重設大小的要求佇列配置記憶體,就會傳回此錯誤。
WSAETOOMANYREFS
仍有太多作業仍參考要求佇列。 目前無法將這個要求佇列的大小調整為較小。

備註

RIOResizeRequestQueue 函式會將要求佇列重設大小為較大或更小。 如果要求佇列已經包含專案,這些專案將會複製到新的要求佇列。

要求佇列具有所需的最小大小,取決於目前 (要求佇列上傳送和接收的項目數目) 。 如果應用程式呼叫 RIOResizeRequestQueue 函式,並嘗試針對現有項目的數目設定佇列太小,則呼叫將會失敗,且佇列不會重設大小。

注意

若要在運行時間取得 RIOResizeRequestQueue 函式的函式指標,必須呼叫 WSAIoctl 函式並指定 SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER opcode。 傳遞至 WSAIoctl 函式的輸入緩衝區必須包含 WSAID_MULTIPLE_RIO,這是全域唯一標識碼 (GUID) ,其值可識別 Winsock 已註冊的 I/O 延伸模組函式。 成功時, WSAIoctl 函式所傳回的輸出會包含 指向RIO_EXTENSION_FUNCTION_TABLE 結構的指標,其中包含 Winsock 已註冊 I/O 延伸模組函式的指標。 SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL 定義於 Ws2def.h 頭檔中。 WSAID_MULTIPLE_RIO GUID 定義於 Mswsock.h 頭檔中。

 

Windows Phone 8:Windows Phone 8 和更新版本上的 Windows Phone Store 應用程式支援此函式。

Windows 8.1Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更新版本上的 Windows 市集應用程式支援此函式。

執行緒安全性

如果多個線程嘗試使用RIODequeueCompletionRIOResizeRequestQueue 函式來存取相同的RIO_RQ,則必須以重要區段、精簡讀取器寫入器鎖定或類似的互斥機制來協調存取。 如果未共用完成佇列,則不需要互斥。

規格需求

需求
標頭 mswsock.h