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

另请参阅

WSK_CLIENT_CONNECTION_DISPATCH

WskAccept

WskAcceptEvent

WskCloseSocket

WskConnect

WskControlSocket

WskDisconnect

WskSocket

WskSocketConnect