FltEnumerateFilterInformation 函数 (fltkernel.h)

FltEnumerateFilterInformation 例程提供有关所有已注册的筛选器驱动程序的信息, (包括系统中) 的微型筛选器驱动程序和旧筛选器驱动程序。

语法

NTSTATUS FLTAPI FltEnumerateFilterInformation(
  [in]  ULONG                    Index,
  [in]  FILTER_INFORMATION_CLASS InformationClass,
  [out] PVOID                    Buffer,
  [in]  ULONG                    BufferSize,
  [out] PULONG                   BytesReturned
);

参数

[in] Index

请求其信息的筛选器驱动程序的从零开始的索引。 此参数标识已注册的筛选器驱动程序的全局列表中的筛选器。 如果列表包含 n 个 筛选器驱动程序,则有效的 索引 值范围为 0 到 n-1。 如果 Index 值超出此范围, FltEnumerateFilterInformation 将返回STATUS_NO_MORE_ENTRIES。

[in] InformationClass

请求的信息类型。 此参数可以具有以下值之一。

含义
FilterFullInformation Buffer 参数指向的 缓冲区 接收微筛选器驱动程序 的FILTER_FULL_INFORMATION 结构, (旧筛选器驱动程序) 忽略。
FilterAggregateBasicInformation Buffer 参数指向的 缓冲区 接收微筛选器或旧版筛选器驱动程序 的FILTER_AGGREGATE_BASIC_INFORMATION 结构。 此信息 值从 Microsoft Windows Server 2003 SP1 和带有筛选器管理器汇总的 Windows XP SP2 开始可用。 有关适用于 Windows XP SP2 的筛选器管理器汇总包的详细信息,请参阅 Microsoft 知识库中的文章914882“适用于 Windows XP SP2 的筛选器管理器汇总包”。
FilterAggregateStandardInformation Buffer 参数指向的 缓冲区 接收微筛选器或旧筛选器驱动程序 的FILTER_AGGREGATE_STANDARD_INFORMATION 结构。 此信息 值从 Windows Vista 开始可用。

[out] Buffer

指向调用方分配的缓冲区的指针,该缓冲区接收请求的信息。 缓冲区中返回的信息的类型由 InformationClass 参数定义。

[in] BufferSize

Buffer 参数指向的缓冲区的大小(以字节为单位)。 调用方应根据给定 的 InformationClass 值设置此参数。

[out] BytesReturned

指向调用方分配的变量的指针,该变量接收 Buffer 指向的缓冲区中返回的字节数。 如果 BufferSize 的输入值太小, FltEnumerateFilterInformation 将返回STATUS_BUFFER_TOO_SMALL并将此变量设置为存储所请求信息所需的字节数。 此参数是必需的,不能为 NULL

返回值

FltEnumerateFilterInformation 返回STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:

返回代码 说明
STATUS_BUFFER_TOO_SMALL
Buffer 参数指向的 缓冲区 不够大,无法存储请求的信息。 这是错误代码。
STATUS_FLT_DELETING_OBJECT
已找到匹配的微筛选器驱动程序,但正在将其拆除。 这是错误代码。
STATUS_INVALID_PARAMETER
InformationClass 参数指定了无效值。 例如,如果在 Windows Vista 之前的操作系统上指定 FilterAggregateStandardInformation ,则例程将返回STATUS_INVALID_PARAMETER。 这是错误代码。
STATUS_NO_MORE_ENTRIES
已注册的筛选器驱动程序的全局列表中没有其他条目。 (Index 参数的值大于或等于筛选器驱动程序的数目。) 这是一个警告代码。

注解

从 Microsoft Windows Server 2003 SP1 和具有筛选器管理器汇总的 Windows XP SP2 开始, FltEnumerateFilterInformation 提供有关文件系统筛选器驱动程序的信息, (也称为“旧版筛选器”) 以及微型筛选器驱动程序。 在早期版本的 Windows 上, FltEnumerateFilterInformation 仅提供有关微筛选器驱动程序的信息。

以下伪代码枚举所有已注册筛选器驱动程序的筛选器信息。

#define InfoClass FilterAggregateStandardInformation   // Assumes Windows Vista or later operating system.

int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
 Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
 i++;
}

FltEnumerateFilterInformation 通过 Buffer 参数返回有关已注册的筛选器驱动程序的信息,以减小与基础文件系统的距离。 例如,假设基础文件系统上方附加了 n 个筛选器驱动程序。 首先 (返回离文件系统最远的筛选器驱动程序的信息, 索引 参数值为 0) 。 有关下一个最远附加的筛选器驱动程序的信息将返回第二个 (, 索引 参数值为 1) ,依此依此。 最后,最后一 (返回最靠近文件系统的筛选器驱动程序的信息, 索引 参数值为 n-1) 。

注意由于筛选器驱动程序可以随时注册,因此对具有相同 IndexFltEnumerateFilterInformation 的两次调用可能不会返回相同的结果。
 
若要枚举所有已注册的微筛选器驱动程序,请调用 FltEnumerateFilters

若要枚举所有已注册的旧筛选器驱动程序,请调用 IoEnumerateRegisteredFiltersList

若要枚举给定微筛选器驱动程序的所有实例,请调用 FltEnumerateInstanceInformationByFilter

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

若要列出筛选器管理器已知的所有卷的卷信息,请调用 FltEnumerateVolumeInformation

要求

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

另请参阅

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList