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 在输入时非NULLFltEnumerateFilters 返回STATUS_BUFFER_TOO_SMALL,并将 NumberFiltersReturned 设置为指向找到的小筛选器驱动程序数。 此参数是必需的,不能 NULL

返回值

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

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

言论

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

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

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

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

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

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
IRQL <= APC_LEVEL

另请参阅

FltEnumerateFilterInformation

FltEnumerateInstances

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference