Преимущества модели диспетчера фильтров

Модель диспетчера фильтров предоставляет следующие преимущества по сравнению с существующей устаревшей моделью драйвера фильтра.

  • Возможность подключения к томам DAX. Устаревшие драйверы фильтров файловой системы не могут подключаться к томам прямого доступа (DAX).

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

  • Возможность выгрузки во время работы системы. В отличие от устаревшего драйвера фильтра, который не может быть выгружен во время работы системы, драйвер минифильтра можно выгрузить в любое время, и он может предотвратить сам выгрузку при необходимости. Диспетчер фильтров синхронизирует безопасное удаление всех вложений драйвера минифильтра и обрабатывает операции, которые завершаются после выгрузки драйвера минифильтра.

  • Возможность обрабатывать только необходимые операции. Диспетчер фильтров использует модель обратного вызова, в которой драйвер минифильтра может выбрать типы операций ввода-вывода (на основе IRP, быстрых операций ввода-вывода или FSFilter) для фильтрации. Драйвер минифильтра получает только запросы ввода-вывода, для которых он зарегистрировал процедуры обратного вызова. Драйвер минифильтра может зарегистрировать уникальную процедуру обратного вызова перед операцией или после операции, а также игнорировать некоторые типы операций, например разбиение операций ввода-вывода по страницам и кэшированные операции ввода-вывода.

  • Более эффективное использование стека ядра. Диспетчер фильтров оптимизирован для уменьшения объема стека ядра, который он использует, а модель обратного вызова значительно снижает влияние драйверов минифильтра на стек. Диспетчер фильтров снижает влияние рекурсивного ввода-вывода, поддерживая инициированные фильтром ввод-вывод, которые отображаются только более низкими драйверами в стеке.

  • Менее избыточный код. Диспетчер фильтров сокращает объем кода, необходимого для драйвера минифильтра, несколькими способами, такими как предоставление инфраструктуры для создания имен и кэширование имен файлов для использования несколькими драйверами минифильтра. Диспетчер фильтров подключается к томам и уведомляет драйверы минифильтра о доступности тома. Диспетчер фильтров оптимизирован для поддержки многопроцессорных систем, что делает блокировку более эффективной и менее подверженной ошибкам.

  • Меньший уровень сложности. Диспетчер фильтров упрощает фильтрацию запросов ввода-вывода, предоставляя процедуры поддержки для общих функций, таких как именование, управление контекстом, обмен данными между пользовательским режимом и режимом ядра, а также маскирование различий между файловыми системами. Диспетчер фильтров обрабатывает определенные задачи от имени драйверов минифильтра, такие как ожидающие irP, перечисление и присоединение к стекам файловой системы.

  • Упрощение добавления новых операций. Так как драйверы минифильтра регистрируются только для операций ввода-вывода, которые они будут обрабатывать, в диспетчер фильтров можно добавить поддержку новых операций, не нарушая существующие драйверы минифильтра.

  • Улучшенная поддержка нескольких платформ. Драйвер минифильтра может выполняться в любой версии Windows, поддерживающей диспетчер фильтров. Если драйвер минифильтра регистрируется для операции ввода-вывода, недоступной во время выполнения, диспетчер фильтров просто не вызывает драйвер минифильтра для этой операции. Драйвер минифильтра может программно определить, доступны ли функции, а структуры диспетчера фильтров предназначены для расширения.

  • Улучшенная поддержка приложений в пользовательском режиме. Диспетчер фильтров предоставляет общие функции для служб пользовательского режима и программ управления, работающих с драйверами минифильтра. Библиотека пользовательского режима диспетчера фильтров, Filterlib.dll, обеспечивает обмен данными между службой или программой управления в пользовательском режиме и драйвером минифильтра. Filterlib.dll также предоставляет интерфейсы для средств управления.