PFN_WSK_INSPECT_COMPLETE回调函数 (wsk.h)

WskInspectComplete 函数完成对以前在启用了条件接受模式的侦听套接字上收到的传入连接请求的检查。

语法

PFN_WSK_INSPECT_COMPLETE PfnWskInspectComplete;

NTSTATUS PfnWskInspectComplete(
  [in]      PWSK_SOCKET ListenSocket,
  [in]      PWSK_INSPECT_ID InspectID,
  [in]      WSK_INSPECT_ACTION Action,
  [in, out] PIRP Irp
)
{...}

参数

[in] ListenSocket

指向 WSK_SOCKET 结构的指针。 此指针指定 WSK 应用程序接收其正在检查的传入连接请求的侦听套接字。

[in] InspectID

指向 WSK_INSPECT_ID 结构的指针。 结构的内容标识 WSK 应用程序正在检查的特定连接请求。

[in] Action

一个 值,该值指定 WSK 应用程序是接受还是拒绝传入的连接请求。 WSK 应用程序必须为此参数指定 WskInspectAcceptWskInspectReject

[in, out] Irp

指向调用方分配的 IRP 的指针,WSK 子系统使用该 IRP 以异步方式完成恢复操作。 有关将 IRP 与 WSK 函数配合使用的详细信息,请参阅 将 IRP 与 Winsock 内核函数配合使用

返回值

WskInspectComplete 返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS
已成功恢复以前插入的检查操作。 IRP 将以成功状态完成。
STATUS_PENDING
WSK 子系统无法立即恢复检查操作。 WSK 子系统将在恢复传入连接请求的检查操作后完成 IRP。 恢复检查操作的状态将在 IRP 的 IoStatus.Status 字段中返回。
STATUS_FILE_FORCED_CLOSED
套接字不再正常工作。 IRP 将以失败状态完成。 WSK 应用程序必须调用 WskCloseSocket 函数以尽快关闭套接字。
其他状态代码
出现了错误。 IRP 将以失败状态完成。

注解

WSK 应用程序调用 WskInspectComplete 函数,以完成对应用程序的 WskInspectEvent 事件回调函数先前返回 WskInspectPend 的传入连接请求的检查。

WSK 应用程序只能在启用了条件接受模式的侦听套接字上调用 WskInspectComplete 函数。 WSK 应用程序可以通过启用 SO_CONDITIONAL_ACCEPT 套接字选项在侦听套接字上启用条件接受模式。 有关有条件地接受传入连接的详细信息,请参阅侦听和接受传入Connections

WSK 子系统在调用应用程序的 WskInspectEvent 事件回调函数时,将指向 WSK_INSPECT_ID 结构的指针传递给 WSK 应用程序。 在从 WskInspectEvent 事件回调函数返回 WskInspectPend 之前, WSK 应用程序将结构的内容复制到其自己的WSK_INSPECT_ID结构。 WSK 应用程序在调用 WskInspectComplete 函数时,在 InspectID 参数中传递指向其自己的WSK_INSPECT_ID结构的指针。

如果 WSK 应用程序在 Action 参数中指定 WskInspectAccept,则 WSK 子系统将继续建立套接字连接。 WSK 子系统将通过完成 WSK 应用程序对 WskAccept 函数的调用或调用 WSK 应用程序的 WskAcceptEvent 事件回调函数(如果已启用)将套接字返回到 WSK 应用程序。 如果在完全建立套接字连接之前删除了传入的连接请求,WSK 子系统将调用 WSK 应用程序的 WskAbortEvent 事件回调函数。

如果 WSK 应用程序在 Action 参数中指定 WskInspectReject,则会删除传入的连接请求,并且不会建立套接字连接。

如果在 WSK 应用程序调用 WskInspectComplete 函数之前远程系统删除了传入的连接请求,则 WSK 子系统将调用 WSK 应用程序的 WskAbortEvent 事件回调函数。

如果 WSK 应用程序对已中止的传入连接请求调用 WskInspectComplete 函数,则即使 WSK 应用程序在 Action 参数中指定了 WskInspectAccept,也不会建立连接。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 wsk.h (包括 Wsk.h)
IRQL <= DISPATCH_LEVEL

另请参阅

SO_CONDITIONAL_ACCEPT

WSK_INSPECT_ID

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskAbortEvent

WskAccept

WskAcceptEvent

WskInspectEvent