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 在输入时为零, 而 VolumeList 为 NULL, 则 NumberVolumesReturned 将接收找到的卷数。
[in] VolumeListSize
VolumeList 指向的缓冲区可以容纳的不透明筛选器指针的数目。 此参数是可选的,可以为零。 如果 VolumeListSize 在输入时为零, 而 VolumeList 为 NULL, 则 NumberVolumesReturned 将接收找到的卷数。
[out] NumberVolumesReturned
指向调用方分配的变量的指针,该变量接收 VolumeList 指向的数组中返回的不透明卷指针的数量。 如果 VolumeListSize 太小且 VolumeList 在输入时不为 NULL , 则 FltEnumerateVolumes 将返回STATUS_BUFFER_TOO_SMALL并将 NumberVolumesReturned 设置为指向找到的卷数。 此参数是必需的,不能为 NULL。
返回值
FltEnumerateVolumes 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:
返回代码 | 说明 |
---|---|
|
VolumeList 参数指向的缓冲区不够大,无法存储请求的信息。 这是错误代码。 |
注解
由于筛选器管理器的卷列表的内容可以随时更改,因此对 FltEnumerateVolumes 的 两次调用不能保证返回相同的结果。
FltEnumerateVolumes 添加对 VolumeList 指向的数组中返回的每个不透明卷指针的断开引用。 当不再需要这些指针时,调用方必须通过对每个指针调用 FltObjectDereference 来释放它们。 因此,每次成功调用 FltEnumerateVolumes 时,都必须通过每个返回的卷指针对 FltObjectDereference 的后续调用进行匹配。
若要将 VolumeList 参数返回的一个或多个不透明卷指针转换为卷信息,请调用 FltGetVolumeInformation。
若要列出筛选器管理器已知的所有卷的卷信息,请调用 FltEnumerateVolumeInformation。
若要枚举所有已注册的微筛选器驱动程序,请调用 FltEnumerateFilters。
若要枚举所有微筛选器驱动程序实例,请调用 FltEnumerateInstances。
若要枚举给定卷上的所有微筛选器驱动程序实例,请调用 FltEnumerateInstanceInformationByVolume。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 FltKernel.h) |
Library | FltMgr.lib |
IRQL | <= APC_LEVEL |