FwpsPendOperation0 函数 (fwpsk.h)

FwpsPendOperation0 函数由标注调用,以暂停数据包处理,等待另一个操作完成。

注意FwpsPendOperation0FwpsPendOperation 的特定版本。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向特定版本的 Windows
 

语法

NTSTATUS FwpsPendOperation0(
  [in]  HANDLE completionHandle,
  [out] HANDLE *completionContext
);

参数

[in] completionHandle

完成当前筛选操作所需的完成句柄。 此参数是从传递到标注驱动程序的 classifyFn 函数的 FWPS_INCOMING_METADATA_VALUES0 结构的 completionHandle 成员获取的。

[out] completionContext

此笔式操作的完成上下文的句柄。 当标注准备好恢复数据包处理时,它将调用 FwpsCompleteOperation0 函数,并将此参数的值用作输入 completionContext 参数。

返回值

FwpsPendOperation0 函数返回以下 NTSTATUS 代码之一。

返回代码 说明
STATUS_SUCCESS
数据包处理已成功完成。
STATUS_FWP_CANNOT_PEND
在重新授权分类操作中调用 了 FwpsPendOperation0 。 有关详细信息,请参阅“备注”。
STATUS_FWP_NULL_POINTER
一个或多个参数无效。
STATUS_FWP_TCPIP_NOT_READY
TCP/IP 网络堆栈尚未准备好允许此操作。
其他状态代码
出现了错误。

注解

标注应保留 completionContext 参数值,直到它恢复数据包处理。 当提示调用此函数的操作已完成时,标注应调用 FwpsCompleteOperation0 函数,并向其传递 completionContext 参数值。

标注只能调用此函数来绘制源自FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx、FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx 或FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx筛选层的数据包。 当标注必须在其中一个层上执行处理,这些层可能需要较长的时间间隔才能完成,或者如果当前 IRQL > PASSIVE_LEVEL PASSIVE_LEVEL,则标注可以将当前处理操作写在数据包上。

若要完成以前FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx 层的连接,标注驱动程序必须重新插入在该层克隆的数据包,并调用 FwpsCompleteOperation0 函数。

为了能够处理数据包,标注驱动程序的 classifyFn 函数应将 FWPS_CLASSIFY_OUT0 结构的 actionType 成员设置为FWP_ACTION_BLOCK并将 Flags 成员设置为FWPS_CLASSIFY_OUT_FLAG_ABSORB。

执行 FwpsCompleteOperation0 函数后,将重新进行身份验证。 TCP 连接(如果允许)是通过完成握手操作创建的,但非 TCP 连接仅创建状态条目。 FwpsPendOperation0 函数完成时,将从内存中刷新任何笔式数据包数据,因此应用程序必须在 FwpsCompleteOperation0 运行后重新传输这些数据包。 标注可以缓冲此类数据并代表它们重新输入数据。

通过调用 FwpsPendOperation0 和 FwpsCompleteOperation0,只能推迟初始应用程序层强制 (ALE) 流授权。 如果重新授权 ALE 流,则设置FWP_CONDITION_FLAG_IS_REAUTHORIZE标志。 如果设置了 FWP_CONDITION_FLAG_IS_REAUTHORIZE 标志,则从 FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx 或 FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx筛选层调用 FwpsPendOperation0 将失败,并且将返回STATUS_FWP_CANNOT_PEND状态代码。 有关详细信息,请参阅 Windows SDK 中的 ALE 重新授权。

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 fwpsk.h (包括 Fwpsk.h)
Library Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

另请参阅

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn