FwpsCalloutRegister2 函数 (fwpsk.h)

FwpsCalloutRegister2 函数向筛选器引擎注册标注。

注意FwpsCalloutRegister2 是 Windows 8 及更高版本中使用的特定 FwpsCalloutRegister 版本。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向 Windows 的特定版本 。 对于 Windows 7, 可以使用 FwpsCalloutRegister1 。 对于 Windows Vista, 可以使用 FwpsCalloutRegister0

 

语法

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

参数

[in, out] deviceObject

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

[in] callout

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

[out, optional] calloutId

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

返回值

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

返回代码 说明
STATUS_SUCCESS
标注已成功注册到筛选器引擎。
STATUS_FWP_ALREADY_EXISTS
无法向筛选器引擎注册标注。 标注已在筛选器引擎中注册,其标识符与标注参数指向FWPS_CALLOUT2结构的 calloutKey 成员中指定的 GUID 相同。
其他状态代码
出现了错误。

注解

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

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

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

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

要求

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

另请参阅

创建设备对象

FWPS_CALLOUT2

FwpsCalloutRegister0

FwpsCalloutRegister1

FwpsCalloutUnregisterById0

FwpsCalloutUnregisterByKey0

FwpsFlowAssociateContext0

FwpsFlowRemoveContext0

FwpsStreamInjectAsync0

IoCreateDevice

标注类型

flowDeleteFn