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 |
---|---|
無效的參數已傳遞至 函式。 如果 RQ 參數無效, (RIO_INVALID_RQ 傳回此錯誤,例如) 。 如果 MaxOutstandingReceive 和 MaxOutstandingSend 參數都是零,也會傳回此錯誤。 |
|
無法配置足夠的記憶體。 如果無法為重設大小的要求佇列配置記憶體,就會傳回此錯誤。 |
|
仍有太多作業仍參考要求佇列。 目前無法將這個要求佇列的大小調整為較小。 |
備註
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.1 和 Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更新版本上的 Windows 市集應用程式支援此函式。
執行緒安全性
如果多個線程嘗試使用RIODequeueCompletion 或RIOResizeRequestQueue 函式來存取相同的RIO_RQ,則必須以重要區段、精簡讀取器寫入器鎖定或類似的互斥機制來協調存取。 如果未共用完成佇列,則不需要互斥。
規格需求
需求 | 值 |
---|---|
標頭 | mswsock.h |