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。 如果 索引 值超过此范围,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 开始,此 InformationClass 值可用。 有关 Windows XP SP2 的筛选器管理器汇总包的详细信息,请参阅 Microsoft 知识库中的文章914882“Windows XP SP2的筛选器管理器汇总包”。
FilterAggregateStandardInformation Buffer 参数指向的缓冲区接收微型筛选器驱动程序或旧筛选器驱动程序的 FILTER_AGGREGATE_STANDARD_INFORMATION 结构。 从 Windows Vista 开始,此 InformationClass 值可用。

[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 筛选器驱动程序。 首先返回与文件系统最远附加的筛选器驱动程序的信息(Index 参数值为 0)。 有关下一个最远的附加筛选器驱动程序的信息将返回第二个(Index 参数值为 1),依此返回。 最后,返回与文件系统最接近的筛选器驱动程序的信息(Index 参数值 n-1)。

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

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

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

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

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

要求

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

另请参阅

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList