mswsock.h (RIO_NOTIFICATION_COMPLETION_TYPE 列舉)

RIO_NOTIFICATION_COMPLETION_TYPE列舉會指定使用 Winsock 已註冊 I/O 延伸模組傳送或接收數據時,要與RIONotify 函式搭配使用的完成佇列通知類型。

Syntax

typedef enum _RIO_NOTIFICATION_COMPLETION_TYPE {
  RIO_EVENT_COMPLETION = 1,
  RIO_IOCP_COMPLETION = 2
} RIO_NOTIFICATION_COMPLETION_TYPE, *PRIO_NOTIFICATION_COMPLETION_TYPE;

常數

 
RIO_EVENT_COMPLETION
值: 1
事件句柄可用來發出完成佇列通知的訊號。

建立RIO_CQ時,事件句柄會以傳遞至RIOCreateCompletionQueue 函式的 RIO_NOTIFICATION_COMPLETION 結構中的 EventNotify.EventHandle 成員的形式提供。RIO_CQ的RIONotify 函式完成會發出事件訊號。 建立RIO_CQ時,傳遞至RIOCreateCompletionQueue 函式RIO_NOTIFICATION_COMPLETION結構中的 Event.NotifyReset 成員會指出事件是否應該重設為對RIONotify 函式的呼叫的一部分。
RIO_IOCP_COMPLETION
值: 2
I/O 完成埠句柄可用來發出完成佇列通知的訊號。

建立RIO_CQ時,會將 I/O 完成埠句柄當做傳遞至RIOCreateCompletionQueue 函式之RIO_NOTIFICATION_COMPLETION結構中的 Iocp.IocpHandle 成員提供。 此RIO_CQ的RIONotify 函式完成會將專案排入 I/O 完成埠,您可以使用 GetQueuedCompletionStatusGetQueuedCompletionStatusEx 函式來擷取。 佇列專案會將傳回的 lpCompletionKey 參數值設定為 RIO_NOTIFICATION_COMPLETIONIocp.CompletionKey 成員中指定的值,並將傳回的 lpOverlapped 參數值設定為 RIO_NOTIFICATION_COMPLETION 結構中 Iocp.Overlapped 成員中指定的值。 RIO_NOTIFICATION_COMPLETION中的 Iocp.Overlapped 成員將是非 NULL 值。

備註

RIO_NOTIFICATION_COMPLETION_TYPE列舉會與 Winsock 已註冊的 I/O 延伸模組搭配使用,以指定要與RIO_CQ搭配使用的 I/O 完成類型。 列舉值會在建立 RIO_CQ 時,在傳遞至 RIOCreateCompletionQueue 函式的 RIO_NOTIFICATION_COMPLETION 結構中設定。

建立 RIO_CQ時, RIO_NOTIFICATION_COMPLETION 結構會決定應用程式如何接收完成佇列通知。 如果在建立完成佇列時提供 RIO_NOTIFICATION_COMPLETION 結構,應用程式可能會呼叫 RIONotify 函式 來要求完成佇列通知。 通常當完成佇列不是空的時,就會發生此通知。 這可能會立即發生,或下一個完成專案插入完成佇列時。 發出完成佇列通知之後,應用程式必須呼叫 RIONotify ,才能接收另一個完成佇列通知。

完成佇列通知有兩個選項可供使用。

  • 事件句柄。
  • I/O 完成埠

如果RIO_NOTIFICATION_COMPLETION結構的 Type 成員設定為 RIO_EVENT_COMPLETION,則會使用事件句柄來發出完成佇列通知的訊號。 事件句柄會以傳遞至RIOCreateCompletionQueue 函式的 RIO_NOTIFICATION_COMPLETION 結構中的 EventNotify.EventHandle 成員的形式提供。

如果RIO_NOTIFICATION_COMPLETION結構的 Type 成員設定為 RIO_IOCP_COMPLETION,則會使用 I/O 完成埠來發出完成佇列通知的訊號。 I/O 完成埠句柄會以傳遞至RIOCreateCompletionQueue 函式之RIO_NOTIFICATION_COMPLETION結構中的 Iocp.IocpHandle 成員的形式提供。 此RIO_CQ的RIONotify 函式完成會將專案排入 I/O 完成埠,您可以使用 GetQueuedCompletionStatusGetQueuedCompletionStatusEx 函式來擷取。

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
標頭 mswsock.h

另請參閱

RIOCreateCompletionQueue

RIONotify

RIO_CQ

RIO_NOTIFICATION_COMPLETION