FwpmBfeStateSubscribeChanges0 函数 (fwpmk.h)

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

警告

请勿从传入 回调 参数的回调函数调用 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 已成功注册回调函数。
其他 NTSTATUS 代码 发生错误。

言论

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

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

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

标注驱动程序必须通过调用 FwpmBfeStateUnsubscribeChanges0 函数来取消注册回调函数,然后才能卸载标注驱动程序。

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

要求

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

另请参阅