FwpsCalloutRegister3 函数 (fwpsk.h)

FwpsCalloutRegister3 函数注册 FWPS_CALLOUT3 结构版本 3 的函数指针。

语法

NTSTATUS FwpsCalloutRegister3(
  [in, out]       void                *deviceObject,
  [in]            const FWPS_CALLOUT3 *callout,
  [out, optional] UINT32              *calloutId
);

参数

[in, out] deviceObject

指向之前由标注驱动程序创建的设备对象的指针。 有关标注驱动程序如何创建设备对象的详细信息,请参阅 创建设备对象

[in] callout

指向常量 FWPS_CALLOUT3 结构的指针,该结构包含向筛选器引擎注册标注所需的数据。

[out, optional] calloutId

指向 UINT32 类型的变量的指针,该变量接收标识筛选器引擎中的标注的运行时标识符。 标注驱动程序从筛选器引擎注销标注时,将此标识符传递给 FwpsCalloutUnregisterById0 函数。 如果标注驱动程序正在筛选数据流,则它还将此标识符传递给 FwpsFlowAssociateContext0,并 FwpsFlowRemoveContext0 函数。 如果标注驱动程序将数据注入数据流,它还将此标识符传递给 FwpsStreamInjectAsync0 函数。 筛选器引擎还会将此标识符传递给标注驱动程序的 FwpsCalloutFlowDeleteNotifyFn0 标注函数。 此参数是可选的,可以 NULL

返回值

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

返回代码 描述
STATUS_SUCCESS 标注已成功注册到筛选器引擎。
STATUS_FWP_ALREADY_EXISTS 无法向筛选器引擎注册标注。 标注已在筛选器引擎中注册,其标识符与 calloutKey 中指定的 GUID 相同,该标识符与 标注 参数指向的 FWPS_CALLOUT3 结构 成员相同。
其他 NTSTATUS 代码 发生错误。

言论

标注驱动程序必须在卸载前调用 FwpsCalloutUnregisterById0

标注驱动程序调用 FwpsCalloutRegister3 函数,以向筛选器引擎注册标注。 标注驱动程序可以随时向筛选器引擎注册标注,即使筛选器引擎当前未运行。

在标注驱动程序向筛选器引擎注册标注之前,可以将为筛选器操作指定标注的标注和筛选器添加到筛选器引擎。 在这种情况下,操作类型为 FWP_ACTION_CALLOUT_TERMINATINGFWP_ACTION_CALLOUT_UNKNOWN 的筛选器被视为 FWP_ACTION_BLOCK,在向筛选器引擎注册标注之前,将忽略具有 FWP_ACTION_CALLOUT_INSPECTION 操作类型的筛选器。

标注驱动程序通过调用 FwpsCalloutUnregisterById0 函数或 FwpsCalloutUnregisterByKey0 函数从筛选器引擎注销标注。 在以前向筛选器引擎注册的所有标注已成功注销之前,无法卸载标注驱动程序。

此函数实质上与以前的版本相同,FwpsCalloutRegister2。 唯一的区别是标注参数指向的更新 FWPS_CALLOUT3 结构。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
目标平台 普遍
标头 fwpsk.h
Fwpkclnt.lib
IRQL PASSIVE_LEVEL

另请参阅