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 值,例如以下值之一:
返回代码 | 说明 |
---|---|
|
Buffer 参数指向的 缓冲区 不够大,无法存储请求的信息。 这是错误代码。 |
|
已找到匹配的微筛选器驱动程序,但正在将其拆除。 这是错误代码。 |
|
为 InformationClass 参数指定了无效值。 例如,如果在 Windows Vista 之前的操作系统上指定 FilterAggregateStandardInformation ,则例程将返回STATUS_INVALID_PARAMETER。 这是错误代码。 |
|
已注册的筛选器驱动程序的全局列表中没有其他条目。 (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) 。
若要枚举所有已注册的旧筛选器驱动程序,请调用 IoEnumerateRegisteredFiltersList。
若要枚举给定微筛选器驱动程序的所有实例,请调用 FltEnumerateInstanceInformationByFilter。
若要枚举给定卷上的所有微筛选器驱动程序实例,请调用 FltEnumerateInstanceInformationByVolume。
若要列出筛选器管理器已知的所有卷的卷信息,请调用 FltEnumerateVolumeInformation。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 FltKernel.h) |
Library | FltMgr.lib |
IRQL | <= APC_LEVEL |
另请参阅
FILTER_AGGREGATE_BASIC_INFORMATION
FILTER_AGGREGATE_STANDARD_INFORMATION
FltEnumerateInstanceInformationByFilter
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈