FwpmBfeStateSubscribeChanges0 函数 (fwpmk.h)

FwpmBfeStateSubscribeChanges0 函数注册一个回调函数,每当筛选器引擎的状态发生更改时,就会调用该回调函数。

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

警告

不要从在回调参数中传递的回调函数调用 FwpmBfeStateUnsubscribeChanges0。 这样做可能会导致死锁。

语法

NTSTATUS FwpmBfeStateSubscribeChanges0(
  [in, out]      void                                *deviceObject,
  [in]           FWPM_SERVICE_STATE_CHANGE_CALLBACK0 callback,
  [in, optional] void                                *context,
  [out]          HANDLE                              *changeHandle
);

参数

[in, out] deviceObject

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

[in] callback

指向标注驱动程序提供的服务状态更改回调函数的指针。 每当筛选器引擎的状态发生更改时,筛选器引擎就会调用此函数。

服务状态更改回调函数声明如下。

VOID NTAPI
callback(
    IN OUT void  *context,
    IN FWPM_SERVICE_STATE  newState
    );

上下文

在标注驱动程序调用 FwpmBfeStateSubscribeChanges0 函数时在 Context 参数中传递的指针。

newState

筛选器引擎的新状态。 此参数包含以下值之一:

FWPM_SERVICE_STOPPED

筛选器引擎未运行。

FWPM_SERVICE_START_PENDING

筛选器引擎正在启动。

FWPM_SERVICE_STOP_PENDING

筛选器引擎正在停止。

FWPM_SERVICE_RUNNING

筛选器引擎正在运行。

[in, optional] context

指向标注驱动程序提供的上下文的指针,该上下文传递给 Callback 参数中指定的回调函数。

[out] changeHandle

指向变量的指针,该变量接收与回调函数注册关联的句柄。 标注驱动程序将此句柄传递给 FwpmBfeStateUnsubscribeChanges0 函数以取消注册回调函数。

返回值

FwpmBfeStateSubscribeChanges0 函数返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS
已成功注册回调函数。
其他状态代码
出现了错误。

注解

标注驱动程序调用 FwpmBfeStateSubscribeChanges0 函数,以注册每当筛选器引擎的状态发生更改时调用的回调函数。

例如,除非筛选器引擎当前正在运行,否则标注驱动程序无法通过调用 FwpmEngineOpen0 函数打开与筛选器引擎的会话。 标注驱动程序可以使用 FWPM_SERVICE_RUNNING 通知打开与筛选器引擎的会话,以便它可以调用其他 Windows 筛选平台管理功能。 同样,标注驱动程序可以使用 FWPM_SERVICE_STOP_PENDING 通知在筛选器引擎停止之前执行任何清理。

标注驱动程序必须在调用 FwpmBfeStateGet0 函数之前调用 FwpmBfeStateSubscribeChanges0 以检索筛选器引擎的当前状态。FwpmBfeStateSubscribeChanges0 的调用返回后,标注驱动程序可以随时调用 FwpmBfeStateGet0

标注驱动程序必须通过调用 取消注册回调函数可以卸载标注驱动程序之前的 FwpmBfeStateUnsubscribeChanges0 函数。

要求

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

另请参阅

FwpmBfeStateGet0

FwpmBfeStateUnsubscribeChanges0

FwpmEngineOpen0