fltEnumerateVolumes 函数 (fltkernel.h)

FltEnumerateVolumes 例程枚举系统中的所有卷。

语法

NTSTATUS FLTAPI FltEnumerateVolumes(
  [in]  PFLT_FILTER Filter,
  [out] PFLT_VOLUME *VolumeList,
  [in]  ULONG       VolumeListSize,
  [out] PULONG      NumberVolumesReturned
);

参数

[in] Filter

调用方不透明的筛选器指针。 此参数是必需的,不能为 NULL

[out] VolumeList

指向调用方分配的缓冲区的指针,该缓冲区接收不透明卷指针数组。 此参数是可选的,如果 VolumeListSize 为零,则可以为 NULL。 如果 VolumeListSize 在输入时为零, 而 VolumeListNULL则 NumberVolumesReturned 将接收找到的卷数。

[in] VolumeListSize

VolumeList 指向的缓冲区可以容纳的不透明筛选器指针的数目。 此参数是可选的,可以为零。 如果 VolumeListSize 在输入时为零, 而 VolumeListNULL则 NumberVolumesReturned 将接收找到的卷数。

[out] NumberVolumesReturned

指向调用方分配的变量的指针,该变量接收 VolumeList 指向的数组中返回的不透明卷指针的数量。 如果 VolumeListSize 太小且 VolumeList 在输入时不为 NULL则 FltEnumerateVolumes 将返回STATUS_BUFFER_TOO_SMALL并将 NumberVolumesReturned 设置为指向找到的卷数。 此参数是必需的,不能为 NULL

返回值

FltEnumerateVolumes 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_BUFFER_TOO_SMALL
VolumeList 参数指向的缓冲区不够大,无法存储请求的信息。 这是错误代码。

注解

由于筛选器管理器的卷列表的内容可以随时更改,因此对 FltEnumerateVolumes 的 两次调用不能保证返回相同的结果。

FltEnumerateVolumes 添加对 VolumeList 指向的数组中返回的每个不透明卷指针的断开引用。 当不再需要这些指针时,调用方必须通过对每个指针调用 FltObjectDereference 来释放它们。 因此,每次成功调用 FltEnumerateVolumes 时,都必须通过每个返回的卷指针对 FltObjectDereference 的后续调用进行匹配。

若要将 VolumeList 参数返回的一个或多个不透明卷指针转换为卷信息,请调用 FltGetVolumeInformation

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

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

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

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

要求

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

另请参阅

FltEnumerateFilters

FltEnumerateInstanceInformationByVolume

FltEnumerateInstances

FltEnumerateVolumeInformation

FltGetVolumeInformation

FltObjectDereference