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,则枚举所有卷的实例。 如果 FilterNULL,则必须为非 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 值,例如以下值之一:

返回代码 说明
STATUS_BUFFER_TOO_SMALL
InstanceList 参数指向的缓冲区不够大,无法存储请求的信息。 这是错误代码。
STATUS_INVALID_PARAMETER
筛选器 不能同时为 NULL。 这是错误代码。

注解

由于实例列表中的微筛选器驱动程序实例可以随时更改,因此不保证对具有相同 VolumeFilter 值的 FltEnumerateInstances 的两次调用返回相同的结果。

FltEnumerateInstances 添加对 InstanceList 参数指向的数组中返回的每个不透明实例指针的运行引用。 当不再需要这些指针时,调用方必须通过在每个指针上调用 FltObjectDereference 来释放它们。 因此,对于每个返回的实例指针,每次成功调用 FltEnumerateInstances 都必须匹配对 FltObjectDereference 的后续调用。

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

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

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

若要获取给定微筛选器驱动程序的筛选器信息,请调用 FltGetFilterInformation

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

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

要求

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

另请参阅

FltEnumerateFilterInformation

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference