PFN_WSK_DISCONNECT_EVENT回调函数 (wsk.h)
WskDisconnectEvent 事件回调函数通知 WSK 应用程序连接面向连接的套接字已由远程应用程序断开连接。
语法
PFN_WSK_DISCONNECT_EVENT PfnWskDisconnectEvent;
NTSTATUS PfnWskDisconnectEvent(
[in, optional] PVOID SocketContext,
[in] ULONG Flags
)
{...}
参数
[in, optional] SocketContext
指向已断开连接的面向连接的套接字的套接字上下文的指针。 WSK 应用程序通过以下方式之一向 WSK 子系统提供了此指针:
- 它调用 WskSocket 函数来创建套接字。
- 它调用 WskSocketConnect 函数来创建套接字。
- 它调用 WskAccept 函数以接受套接字作为传入连接。
- 其 WskAcceptEvent 事件回调函数被调用以接受套接字作为传入连接。
[in] Flags
包含以下标志组合的按位 OR 的 ULONG 值:
WSK_FLAG_ABORTIVE
远程应用程序执行了套接字的中止断开连接。 如果未设置此标志,远程应用程序会正常断开套接字的连接。
WSK_FLAG_AT_DISPATCH_LEVEL
名为 WskDisconnectEvent 的 WSK 子系统在 IRQL = DISPATCH_LEVEL 处 事件回调函数。 如果未设置此标志,WSK 子系统可能已在任何 IRQL <= DISPATCH_LEVEL 调用 WskDisconnectEvent 事件回调函数。
返回值
WSK 应用程序的 WskDisconnectEvent 事件回调函数必须始终返回STATUS_SUCCESS。
言论
仅当以前使用 SO_WSK_EVENT_CALLBACK 套接字选项启用事件回调函数时,WSK 子系统才会调用 WSK 应用程序的 WskDisconnectEvent 事件回调函数。 有关启用套接字的事件回调函数的详细信息,请参阅 启用和禁用事件回调函数。
如果远程应用程序执行了正常断开套接字的连接,则不会从套接字接收进一步的数据。 但是,WSK 应用程序仍然可以将数据发送到套接字,直到远程应用程序完全关闭套接字或 WSK 应用程序调用 WskDisconnect 函数或套接字上的 WskCloseSocket 函数。
如果远程应用程序执行了套接字的中止断开连接,则不会从套接字接收进一步的数据,并且无法将进一步的数据发送到套接字。
WSK 子系统在 IRQL <= DISPATCH_LEVEL 调用 WSK 应用程序的 WskDisconnectEvent 事件回调函数。
WSK 应用程序的 WskDisconnectEvent 事件回调函数不得等待 WSK 完成或事件回调函数上下文中的其他 WSK 请求的完成。 回调可以启动其他 WSK 请求(假设它在DISPATCH_LEVEL花费的时间不太多),但即使在 IRQL = PASSIVE_LEVEL调用回调,它也不能等待完成。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 窗户 |
标头 | wsk.h (包括 Wsk.h) |
IRQL | <= DISPATCH_LEVEL |