FltEnumerateFilters 函数 (fltkernel.h)

FltEnumerateFilters 例程枚举系统中所有已注册的微筛选器驱动程序。

语法

NTSTATUS FLTAPI FltEnumerateFilters(
  [out] PFLT_FILTER *FilterList,
  [in]  ULONG       FilterListSize,
  [out] PULONG      NumberFiltersReturned
);

参数

[out] FilterList

指向调用方分配的缓冲区的指针,该缓冲区接收不透明的筛选器指针数组。 此参数是可选的,如果 FilterListSize 参数的值为零,则可以为 NULL。 如果 输入上的 FilterListSize 为零, 而 FilterListNULL则 NumberFiltersReturned 参数将接收找到的微筛选器驱动程序数。

[in] FilterListSize

FilterList 参数指向的缓冲区可以容纳的不透明筛选器指针数。 此参数是可选的,可以为零。 如果 输入上的 FilterListSize 为零, 而 FilterListNULL则 NumberFiltersReturned 参数将接收找到的微筛选器驱动程序数。

[out] NumberFiltersReturned

指向调用方分配的变量的指针,该变量接收 FilterList 参数指向的数组中返回的不透明筛选器指针数。 如果 FilterListSize 参数值太小,并且 FilterList 在输入时为非 NULL,FltEnumerateFilters 将返回STATUS_BUFFER_TOO_SMALL并将 NumberFiltersReturned 设置为指向找到的微型筛选器驱动程序数。 此参数是必需的,不能为 NULL

返回值

FltEnumerateFilters 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_BUFFER_TOO_SMALL
FilterList 参数指向的缓冲区不够大,无法存储请求的信息。 这是错误代码。

注解

由于筛选器可以随时注册,因此不保证对 FltEnumerateFilters 的 两次调用返回相同的结果。

FltEnumerateFiltersFilterList 参数指向的数组中返回的每个不透明筛选器指针添加一个运行引用。 当不再需要这些指针时,调用方必须通过在每个指针上调用 FltObjectDereference 来释放它们。 因此,每次成功调用 FltEnumerateFilters 必须与每个返回的筛选器指针的后续调用 匹配

若要列出所有已注册的微筛选器驱动程序的筛选器信息,请调用 FltEnumerateFilterInformation

若要枚举所有卷上所有微筛选器驱动程序的实例,请调用 FltEnumerateInstances

若要枚举筛选器管理器已知的所有卷,请调用 FltEnumerateVolumes

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

另请参阅

FltEnumerateFilterInformation

FltEnumerateInstances

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference