共用方式為


LPFN_RIORESIZECOMPLETIONQUEUE回呼函式 (mswsock.h)

RIOResizeCompletionQueue 函式會將 I/O 完成佇列的大小調整為較大或較小,以便與 Winsock 已註冊的 I/O 延伸模組搭配使用。

語法

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

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

參數

CQ

描述項,可識別要重設大小的現有 I/O 完成佇列。

QueueSize

傳回值

如果沒有發生錯誤, 則RIOResizeCompletionQueue 函式會傳回 TRUE。 否則會傳回 FALSE 值,而且可以藉由呼叫 WSAGetLastError 函式來擷取特定的錯誤碼。

傳回碼 Description
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 opcode 的 WSAIoctl 函式。 傳遞至 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 市集應用程式支援此函式。

執行緒安全性

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

規格需求

需求
標頭 mswsock.h