Функция 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 , если параметр Filter имеет значение NULL.

[in, optional] Filter

Указатель непрозрачного фильтра для драйвера минифильтра, экземпляры которого необходимо перечислить. Если значение РАВНО NULL, перечисляются экземпляры для всех драйверов минифильтра. Значение должно быть не равно NULL, если volume имеет значение 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 с одинаковыми значениями Volume и Filter не гарантируют получение одного и того же результата.

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