FltEnumerateInstances 函数 (fltkernel.h)
FltEnumerateInstances 例程枚举给定微筛选器驱动程序或卷的微筛选器驱动程序实例。
语法
NTSTATUS FLTAPI FltEnumerateInstances(
[in, optional] PFLT_VOLUME Volume,
[in, optional] PFLT_FILTER Filter,
[out] PFLT_INSTANCE *InstanceList,
[in] ULONG InstanceListSize,
[out] PULONG NumberInstancesReturned
);
参数
[in, optional] Volume
调用方要枚举微筛选器驱动程序实例的卷的不透明指针。 如果 为 NULL,则枚举所有卷的实例。 如果 Filter 为 NULL,则必须为非 NULL。
[in, optional] Filter
要枚举其实例的微筛选器驱动程序的不透明筛选器指针。 如果 为 NULL,则枚举所有微筛选器驱动程序的实例。 如果卷为 NULL,则必须为非 NULL。
[out] InstanceList
指向调用方分配的缓冲区的指针,该缓冲区接收不透明的实例指针数组。
[in] InstanceListSize
InstanceList 指向的缓冲区可以保存的不透明实例指针数。
[out] NumberInstancesReturned
指向调用方分配的变量的指针,该变量接收 在 InstanceList 指向的数组中返回的不透明实例指针数。 如果 InstanceListSize 太小, FltEnumerateInstances 将返回STATUS_BUFFER_TOO_SMALL并将 NumberInstancesReturned 设置为指向找到的匹配实例数。
返回值
FltEnumerateInstances 返回STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:
返回代码 | 说明 |
---|---|
|
InstanceList 参数指向的缓冲区不够大,无法存储请求的信息。 这是错误代码。 |
|
卷 和 筛选器 不能同时为 NULL。 这是错误代码。 |
注解
由于实例列表中的微筛选器驱动程序实例可以随时更改,因此不保证对具有相同 Volume 和 Filter 值的 FltEnumerateInstances 的两次调用返回相同的结果。
FltEnumerateInstances 添加对 InstanceList 参数指向的数组中返回的每个不透明实例指针的运行引用。 当不再需要这些指针时,调用方必须通过在每个指针上调用 FltObjectDereference 来释放它们。 因此,对于每个返回的实例指针,每次成功调用 FltEnumerateInstances 都必须匹配对 FltObjectDereference 的后续调用。
若要枚举所有已注册的微筛选器驱动程序,请调用 FltEnumerateFilters。
若要枚举筛选器管理器已知的所有卷,请调用 FltEnumerateVolumes。
若要列出所有已注册的微筛选器驱动程序的筛选器信息,请调用 FltEnumerateFilterInformation。
若要获取给定微筛选器驱动程序的筛选器信息,请调用 FltGetFilterInformation。
若要枚举给定微筛选器驱动程序的所有实例,请调用 FltEnumerateInstanceInformationByFilter。
若要枚举给定卷上的所有微筛选器驱动程序实例,请调用 FltEnumerateInstanceInformationByVolume。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
IRQL | <= APC_LEVEL |
另请参阅
FltEnumerateInstanceInformationByFilter