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
一个 ULONG 值,该值包含以下标志的组合的按位 OR:
WSK_FLAG_ABORTIVE
远程应用程序执行了套接字的中止断开连接。 如果未设置此标志,远程应用程序将正常断开套接字。
WSK_FLAG_AT_DISPATCH_LEVEL
WSK 子系统在 IRQL = DISPATCH_LEVEL调用 WskDisconnectEvent 事件回调函数。 如果未设置此标志,则 WSK 子系统可能在任何 IRQL <= DISPATCH_LEVEL调用了 WskDisconnectEvent 事件回调函数。
返回值
WSK 应用程序的 WskDisconnectEvent 事件回调函数必须始终返回STATUS_SUCCESS。
注解
仅当远程应用程序断开面向连接的套接字时,WSK 子系统才调用 WSK 应用程序的 WskDisconnectEvent 事件回调函数,前提是事件回调函数以前是使用 SO_WSK_EVENT_CALLBACK 套接字选项启用的。 有关启用套接字的事件回调函数的详细信息,请参阅 启用和禁用事件回调函数。
如果远程应用程序正常断开了套接字,则不会从套接字收到进一步的数据。 但是,WSK 应用程序仍可以将数据发送到套接字,直到套接字被远程应用程序完全关闭,或者 WSK 应用程序调用套接字上的 WskDisconnect 函数或 WskCloseSocket 函数。
如果远程应用程序执行了套接字的中止断开连接,则不会从套接字接收进一步的数据,也不能将进一步的数据发送到套接字。
WSK 子系统在 IRQL <= DISPATCH_LEVEL调用 WSK 应用程序的 WskDisconnectEvent 事件回调函数。
WSK 应用程序的 WskDisconnectEvent 事件回调函数不得等待 WSK 完成或事件回调函数上下文中的其他 WSK 请求完成。 回叫可以启动其他 WSK 请求 (假定它不会在DISPATCH_LEVEL) 花费太多时间,但即使回调在 IRQL = PASSIVE_LEVEL 调用,也不得等待其完成。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | Windows |
标头 | wsk.h (包括 Wsk.h) |
IRQL | <= DISPATCH_LEVEL |