Функция 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, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Буфер, на который указывает параметр Buffer , недостаточно велик для хранения запрошенной информации. Это код ошибки. |
|
Был найден соответствующий драйвер минифильтра, но он сносится. Это код ошибки. |
|
Для параметра InformationClass указано недопустимое значение. Например, если параметр FilterAggregateStandardInformation указан в операционных системах, предшествующих Windows Vista, подпрограмма вернет STATUS_INVALID_PARAMETER. Это код ошибки. |
|
В глобальном списке зарегистрированных драйверов фильтров больше нет записей. (Значение параметра 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).
Чтобы перечислить все зарегистрированные драйверы устаревших фильтров, вызовите IoEnumerateRegisteredFiltersList.
Чтобы перечислить все экземпляры заданного драйвера минифильтра, вызовите FltEnumerateInstanceInformationByFilter.
Чтобы перечислить все экземпляры драйвера минифильтра на заданном томе, вызовите Метод FltEnumerateInstanceInformationByVolume.
Чтобы получить сведения о томах для всех томов, известных диспетчеру фильтров, вызовите FltEnumerateVolumeInformation.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая FltKernel.h) |
Библиотека | FltMgr.lib |
IRQL | <= APC_LEVEL |
См. также раздел
FILTER_AGGREGATE_BASIC_INFORMATION
FILTER_AGGREGATE_STANDARD_INFORMATION
FltEnumerateInstanceInformationByFilter