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

指向 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 套接字选项在侦听套接字上启用条件接受模式。 有关有条件地接受传入连接的详细信息,请参阅 侦听和接受传入连接

WSK 子系统在调用应用程序的 WskInspectEvent 事件回调函数时,向 WSK 应用程序传递了指向 WSK_INSPECT_ID 结构的指针。 WSK 应用程序从 WskInspectEvent 事件回调函数返回 WskInspectPend 之前,将该结构的内容复制到其自己的WSK_INSPECT_ID结构。 当 WSkInspectComplete 函数调用 WskInspectComplete 时,WSK 应用程序会在 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 函数,则即使 Action 参数中指定的 WSK 应用程序 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