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 在输入时非NULLFltEnumerateVolumes 返回STATUS_BUFFER_TOO_SMALL,并将 NumberVolumesReturned 设置为指向找到的卷数。 此参数是必需的,不能 NULL

返回值

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

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

言论

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

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

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

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

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

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

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

要求

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

另请参阅

FltEnumerateFilters

FltEnumerateInstanceInformationByVolume

FltEnumerateInstances

FltEnumerateVolumeInformation

FltGetVolumeInformation

FltObjectDereference