PFLT_FILTER_UNLOAD_CALLBACK回调函数 (fltkernel.h)

微筛选器驱动程序可以将 PFLT_FILTER_UNLOAD_CALLBACK 类型的例程注册为微筛选器驱动程序的 FilterUnloadCallback 例程。

语法

PFLT_FILTER_UNLOAD_CALLBACK PfltFilterUnloadCallback;

NTSTATUS PfltFilterUnloadCallback(
  FLT_FILTER_UNLOAD_FLAGS Flags
)
{...}

参数

Flags

描述卸载请求的标志的位掩码。 此参数可以为 NULL 或以下参数:

标志 含义
FLTFL_FILTER_UNLOAD_MANDATORY 筛选器管理器设置此标志以指示卸载操作是必需的。

返回值

此回调例程返回STATUS_SUCCESS或 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_FLT_DO_NOT_DETACH 如果卸载操作不是必需的,则返回此状态值可防止卸载微筛选器驱动程序。 这是错误代码。

注解

当微筛选器驱动程序通过调用 FltRegisterFilter 注册自身时,它可以注册 FilterUnloadCallback 例程。 为了注册此回调例程,微筛选器驱动程序将 PFLT_FILTER_UNLOAD_CALLBACK 类型的例程的地址存储在微筛选器驱动程序作为参数传递给 FltRegisterFilter的 FLT_REGISTRATION 结构的 FilterUnloadCallback 字段中。

不需要微型筛选器驱动程序来注册 FilterUnloadCallback 例程。 但是,强烈建议注册卸载例程。 如果微筛选器驱动程序未注册 FilterUnloadCallback 例程,则无法卸载该例程。

当微筛选器驱动程序注册 FilterUnloadCallback 例程时:

  • 筛选器管理器调用 FilterUnloadCallback 例程,以通知微筛选器驱动程序筛选器管理器即将卸载微筛选器驱动程序。

  • 如果卸载操作不是必需的,并且 FilterUnloadCallback 例程返回错误或警告 NTSTATUS 代码(例如STATUS_FLT_DO_NOT_DETACH),则不会卸载微筛选器驱动程序。 否则,将卸载微筛选器驱动程序。

  • 如果在 Flags 参数中设置了FLTFL_FILTER_UNLOAD_MANDATORY标志,则卸载操作是必需的,并且微筛选器驱动程序无法阻止自身被卸载。

有关可能的卸载原因和微筛选器驱动程序卸载过程的详细信息,请参阅 调用 FilterUnloadCallback 例程 时。

要求

要求
目标平台 桌面
标头 fltkernel.h (包括 Fltkernel.h)
IRQL PASSIVE_LEVEL

另请参阅

FLT_REGISTRATION

FltRegisterFilter