winsock2.h) (SOCK_NOTIFY_REGISTRATION 结构

表示提供给 ProcessSocketNotifications 函数的信息。

有关详细信息和代码示例,请参阅 Winsock 套接字状态通知

语法

typedef struct SOCK_NOTIFY_REGISTRATION {
  SOCKET socket;
  PVOID  completionKey;
  UINT16 eventFilter;
  UINT8  operation;
  UINT8  triggerFlags;
  DWORD  registrationResult;
} SOCK_NOTIFY_REGISTRATION;

成员

socket

类型: SOCKET

由任何 WSASocket、socketWSAAcceptacceptWSADuplicateSocket 函数打开的 Winsock 套接字的句柄。 仅支持 Microsoft Winsock 提供程序套接字。

completionKey

类型: PVOID

代表套接字发送通知时,要在 PostQueuedCompletionStatus 函数的 dwCompletionKey 参数中使用的值。 创建注册时使用此参数。 若要更改完成密钥,请删除注册并重新注册。

eventFilter

类型: UINT16

一组指示所请求的通知的标志。 这必须是) 中 WinSock2.h (定义的以下一个或多个值。

SOCK_NOTIFY_REGISTER_EVENT_NONE。 不应发出通知。 SOCK_NOTIFY_REGISTER_EVENT_IN。 当可以在不阻塞的情况下读取数据时,应发出通知。 SOCK_NOTIFY_REGISTER_EVENT_OUT。 当可以在不阻塞的情况下写入数据时,应发出通知。 SOCK_NOTIFY_REGISTER_EVENT_HANGUP。 当面向流的连接断开连接或中止时,应发出通知。 SOCK_NOTIFY_REGISTER_EVENTS_ALL。 具有值 (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP)

operation

类型: UINT8

指示对注册执行的操作。 一次最多可以执行一个操作。 这些值在 中 WinSock2.h定义。

SOCK_NOTIFY_OP_NONE。 不应执行任何注册操作。 如果应用程序调用 ProcessSocketNotifications 并且只对接收通知感兴趣,请使用此选项。 SOCK_NOTIFY_OP_ENABLE。 启用注册。 在收到 SOCK_NOTIFY_EVENT_DISABLE 通知之前,不得重新启用通知。 SOCK_NOTIFY_OP_DISABLE。 禁用注册,但不销毁基础数据结构。 请注意,这不会删除注册,它只是禁止排队新通知。 在收到 SOCK_NOTIFY_EVENT_DISABLE 事件之前,可能仍会传递已排队的通知。 SOCK_NOTIFY_OP_REMOVE。 删除以前注册的通知。 可以删除已启用和禁用的通知。 发出 SOCK_NOTIFY_EVENT_REMOVE 通知,保证之后不会再针对该完成密钥发出通知,除非重新注册。

triggerFlags

类型: UINT8

一组标志,指示) 中 WinSock2.h 定义的触发器行为 (。

SOCK_NOTIFY_TRIGGER_ONESHOT。 下一个通知送达后,注册将被禁用 (不会删除) 。 SOCK_NOTIFY_TRIGGER_PERSISTENT。 在显式禁用或删除注册之前,注册将保持活动状态。 SOCK_NOTIFY_TRIGGER_LEVEL。 注册适用于级别触发的通知。 与边缘触发的不兼容。 必须提供边缘触发或级别触发的之一。 SOCK_NOTIFY_TRIGGER_EDGE。 注册适用于边缘触发的通知。 与级别触发不兼容。 必须提供边缘触发或级别触发的之一。

仅当启用注册时,才会提供通知。 禁用注册时,通知不会排队。 当通知排队等待给定套接字时,它们将合并为单个通知。 因此,套接字的单个事件掩码可以描述多个事件。

启用注册后,只要符合所需条件,就会提供级别触发的通知。

启用注册后,每当条件从“不保持”更改为“保持”时,就会提供边缘触发的通知。 启用注册后,条件必须更改才能将通知排队。 因此,注册后,必须完全清空套接字的接收缓冲区,以确保收到通知。

registrationResult

类型: DWORD

成功调用 ProcessSocketNotifications 后, registrationResult 包含一个指示注册成功或失败的代码。 值 ERROR_SUCCESS 表示注册成功。

要求

要求
最低受支持的客户端 Windows 10内部版本 20348
最低受支持的服务器 Windows 10内部版本 20348
标头 winsock2.h

另请参阅