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 函数来取消注册回调函数,然后才能卸载标注驱动程序。
FwpmBfeStateSubscribeChanges0 是 FwpmBfeStateSubscribeChanges的特定版本。 有关详细信息,请参阅 WFP Version-Independent 名称和面向特定版本的 Windows。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows Vista 开始可用。 |
目标平台 | 普遍 |
标头 | fwpmk.h (包括 Fwpmk.h) |
库 | Fwpkclnt.lib |
IRQL | PASSIVE_LEVEL |