Функция 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

Указатель на буфер, выделенный вызывающим объектом, который получает массив непрозрачных указателей тома. Этот параметр является необязательным и может иметь значение NULL , если VolumeListSize равно нулю. Если параметр 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, например следующее:

Код возврата Описание
STATUS_BUFFER_TOO_SMALL
Буфер, на который указывает параметр VolumeList , недостаточно велик для хранения запрошенной информации. Это код ошибки.

Комментарии

Так как содержимое списка томов диспетчера фильтров может измениться в любое время, два вызова FltEnumerateVolumes не гарантированно возвращают одинаковый результат.

FltEnumerateVolumes добавляет ссылку на очистку каждого непрозрачного указателя тома, возвращаемого в массиве, на который указывает VolumeList . Если эти указатели больше не нужны, вызывающий объект должен освободить их, вызвав FltObjectDereference для каждого из них. Таким образом, каждый успешный вызов FltEnumerateVolumes должен соответствовать последующему вызову FltObjectDereference для каждого возвращаемого указателя тома.

Чтобы преобразовать один или несколько непрозрачных указателей тома, возвращаемых параметром VolumeList , в сведения о томе, вызовите FltGetVolumeInformation.

Чтобы получить сведения о томах для всех томов, известных диспетчеру фильтров, вызовите FltEnumerateVolumeInformation.

Чтобы перечислить все зарегистрированные драйверы минифильтра, вызовите FltEnumerateFilters.

Чтобы перечислить все экземпляры драйвера минифильтра, вызовите FltEnumerateInstances.

Чтобы перечислить все экземпляры драйвера минифильтра на заданном томе, вызовите Метод FltEnumerateInstanceInformationByVolume.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая FltKernel.h)
Библиотека FltMgr.lib
IRQL <= APC_LEVEL

См. также раздел

FltEnumerateFilters

FltEnumerateInstanceInformationByVolume

FltEnumerateInstances

FltEnumerateVolumeInformation

FltGetVolumeInformation

FltObjectDereference