Функция IoEnumerateRegisteredFiltersList (ntifs.h)
Подпрограмма IoEnumerateRegisteredFiltersList перечисляет драйверы фильтров файловой системы, зарегистрированные в системе.
Синтаксис
NTSTATUS IoEnumerateRegisteredFiltersList(
[out] PDRIVER_OBJECT *DriverObjectList,
[in] ULONG DriverObjectListSize,
[out] PULONG ActualNumberDriverObjects
);
Параметры
[out] DriverObjectList
Указатель на массив, выделенный вызывающим объектом, который получает указатели на объект драйвера. Этот параметр является необязательным и может иметь значение NULL. (См. следующий раздел примечаний.)
[in] DriverObjectListSize
Размер массива DriverObjectList в байтах. Может равняться нулю. (См. следующий раздел примечаний.)
[out] ActualNumberDriverObjects
Фактическое количество найденных объектов драйвера. Обратите внимание, что если массив в Файле DriverObjectList слишком мал, количество указателей на объекты драйвера, которые копируются в массив, будет меньше , чем ActualNumberDriverObjects.
Возвращаемое значение
IoEnumerateRegisteredFiltersList может возвращать одно из следующих элементов:
Код возврата | Описание |
---|---|
STATUS_SUCCESS | Вызов IoEnumerateRegisteredFiltersList выполнен успешно. |
STATUS_BUFFER_TOO_SMALL | Массив в DriverObjectList слишком мал для хранения всего списка объектов драйвера. В этом случае IoEnumerateRegisteredFiltersList копирует в массив как можно больше указателей на объекты драйвера. |
Комментарии
Драйвер фильтра файловой системы вызывает IoEnumerateRegisteredFiltersList , чтобы получить массив указателей на объекты драйвера для всех драйверов фильтров файловой системы, которые вызвали IoRegisterFsRegistrationChange.
Драйверы фильтров перечисляются в порядке уменьшения расстояния от базовой файловой системы. Первый элемент (нуль индекса) в массиве DriverObjectList представляет фильтр, подключенный вдали от файловой системы. Вторая запись — для следующего самого дальнего фильтра и т. д. Последняя запись в массиве — это фильтр, ближайший к базовой файловой системе.
IoEnumerateRegisteredFiltersList перечисляет только устаревшие драйверы фильтров; он не перечисляет минифильтры. Чтобы перечислить как минифильтры, так и устаревшие фильтры или только минифильтры, вызовите FltEnumerateFilterInformation.
Драйвер фильтра обычно вызывает IoEnumerateRegisteredFiltersList дважды: один раз, чтобы получить количество объектов драйвера в списке, и один раз, чтобы получить сам список объектов драйвера. В первом вызове вызывающий объект должен задать для параметра DriverObjectListзначение NULL , а для параметра DriverObjectListSize — нулевое значение. Во втором вызове DriverObjectList должен содержать указатель на массив указателей соответствующего размера, а DriverObjectListSize — размер этого массива в байтах.
IoEnumerateRegisteredFiltersList увеличивает количество ссылок на каждый объект драйвера в списке, на который указывает DriverObjectList. Таким образом, каждый успешный вызов IoEnumerateRegisteredFiltersList должен соответствовать последующему вызову ObDereferenceObject для каждого объекта драйвера в списке. В этом случае система не может освободить или удалить эти объекты драйвера из-за неоплаченного количества ссылок.
Минифильтры должны вызывать FltEnumerateFilterInformation или FltEnumerateFilters вместо IoEnumerateRegisteredFiltersList.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Накопительный пакет обновления для Windows 2000 с пакетом обновления 4 (SP4); Windows Server 2003 с пакетом обновления 1 (SP1) |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |