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、socket、WSAAccept、accept 或 WSADuplicateSocket 函数打开的 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 |