Функция FltEnumerateFilterInformation (fltkernel.h)

Подпрограмма FltEnumerateFilterInformation предоставляет сведения обо всех зарегистрированных драйверах фильтров (включая драйверы фильтра минифильтра и устаревших фильтров) в системе.

Синтаксис

NTSTATUS FLTAPI FltEnumerateFilterInformation(
  [in]  ULONG                    Index,
  [in]  FILTER_INFORMATION_CLASS InformationClass,
  [out] PVOID                    Buffer,
  [in]  ULONG                    BufferSize,
  [out] PULONG                   BytesReturned
);

Параметры

[in] Index

Отсчитываемый от нуля индекс драйвера фильтра, для которого запрашиваются сведения. Этот параметр определяет фильтр в глобальном списке зарегистрированных драйверов фильтров. Если список содержит n драйверов фильтров, допустимые значения индекса варьируются от 0 до n–1. Если значение Индекса превышает этот диапазон, Функция FltEnumerateFilterInformation возвращает STATUS_NO_MORE_ENTRIES.

[in] InformationClass

Тип запрашиваемой информации. Этот параметр может иметь одно из следующих значений.

Значение Значение
FilterFullInformation Буфер, на который указывает параметр Buffer , получает структуру FILTER_FULL_INFORMATION для драйвера минифильтра (устаревшие драйверы фильтров игнорируются).
FilterAggregateBasicInformation Буфер, на который указывает параметр Buffer , получает структуру FILTER_AGGREGATE_BASIC_INFORMATION для драйвера минифильтра или устаревшего фильтра. Это значение InformationClass доступно начиная с Microsoft Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2) с накопительным пакетом обновления диспетчера фильтров. Дополнительные сведения о накопительном пакете диспетчера фильтров для Windows XP с пакетом обновления 2 (SP2) см. в статье 914882 "Накопительный пакет диспетчера фильтров для Windows XP с пакетом обновления 2 (SP2) в базе знаний Майкрософт.
FilterAggregateStandardInformation Буфер, на который указывает параметр Buffer , получает структуру FILTER_AGGREGATE_STANDARD_INFORMATION для минифильтра или устаревшего драйвера фильтра. Это значение InformationClass доступно начиная с Windows Vista.

[out] Buffer

Указатель на буфер, выделенный вызывающим объектом, который получает запрошенные сведения. Тип сведений, возвращаемых в буфере, определяется параметром InformationClass .

[in] BufferSize

Размер (в байтах) буфера, на который указывает параметр Buffer . Вызывающий объект должен задать этот параметр в соответствии с заданным значением InformationClass .

[out] BytesReturned

Указатель на переменную, выделенную вызывающим объектом, которая получает количество байтов, возвращаемых в буфере, на который указывает buffer . Если входное значение BufferSize слишком мало, FltEnumerateFilterInformation возвращает STATUS_BUFFER_TOO_SMALL и задает для этой переменной количество байтов, необходимых для хранения запрошенной информации. Этот параметр является обязательным и не может иметь значение NULL.

Возвращаемое значение

FltEnumerateFilterInformation возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_BUFFER_TOO_SMALL
Буфер, на который указывает параметр Buffer , недостаточно велик для хранения запрошенной информации. Это код ошибки.
STATUS_FLT_DELETING_OBJECT
Был найден соответствующий драйвер минифильтра, но он сносится. Это код ошибки.
STATUS_INVALID_PARAMETER
Для параметра InformationClass указано недопустимое значение. Например, если параметр FilterAggregateStandardInformation указан в операционных системах, предшествующих Windows Vista, подпрограмма вернет STATUS_INVALID_PARAMETER. Это код ошибки.
STATUS_NO_MORE_ENTRIES
В глобальном списке зарегистрированных драйверов фильтров больше нет записей. (Значение параметра Index больше или равно числу драйверов фильтров.) Это код предупреждения.

Комментарии

Начиная с Microsoft Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2) с накопительным пакетом обновления 2 (SP2) fltEnumerateFilterInformation предоставляет сведения о драйверах фильтров файловой системы (также называемых "устаревшими фильтрами"), а также о драйверах минифильтров. В более ранних версиях Windows FltEnumerateFilterInformation предоставляет сведения только о драйверах минифильтра.

Следующий псевдокод перечисляет сведения о фильтрах для всех зарегистрированных драйверов фильтров.

#define InfoClass FilterAggregateStandardInformation   // Assumes Windows Vista or later operating system.

int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
 Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
 i++;
}

FltEnumerateFilterInformation возвращает сведения о зарегистрированных драйверах фильтров с помощью параметра Buffer в порядке уменьшения расстояния от базовой файловой системы. Например, предположим, что над базовой файловой системой подключено n драйверов фильтров. Сначала возвращаются сведения о драйвере фильтра, подключенном к файловой системе (со значением параметра Index 0). Сведения о следующем драйвере вложенного фильтра возвращаются вторым (со значением параметра Index 1) и т. д. Наконец, последними возвращаются сведения о драйвере фильтра, ближайшем к файловой системе (со значением параметра Indexn-1).

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

Чтобы перечислить все зарегистрированные драйверы устаревших фильтров, вызовите IoEnumerateRegisteredFiltersList.

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

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

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

Требования

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

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

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList