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,则枚举所有卷的实例。 如果 筛选器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 值,例如以下值之一:

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

言论

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

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

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

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

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

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

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

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

要求

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

另请参阅

FltEnumerateFilterInformation

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference