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 |