Поделиться через


Присоединение модуля фильтра

Чтобы инициировать процесс вставки модуля фильтра в стек драйверов, NDIS вызывает функцию FilterAttach драйвера фильтра. В начале выполнения функции FilterAttach модуль фильтра переходит в состояние Присоединение . Дополнительные сведения о присоединении модуля фильтра к стеку драйверов см. в разделе Запуск стека драйверов.

Драйвер фильтра использует дескриптор , который NDIS передает в параметре NdisFilterHandlefilterAttach во всех последующих вызовах функций NdisXxx, которые ссылаются на этот модуль фильтра. К таким функциям относятся указания состояния, запросы на отправку, получение указаний и запросы OID.

Пока модуль фильтра находится в состоянии Присоединение , драйвер:

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

  • Вызывает функцию NdisFSetAttributes , используя значение NdisFilterHandle , переданное NDIS в FilterAttach. Параметр FilterModuleContextобъекта NdisFSetAttributes указывает область контекста драйвера фильтра для этого модуля фильтра. NDIS передает эту область контекста в функции FilterXxx драйвера фильтра.

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

  • Если предыдущие операции успешно завершены, модуль фильтра находится в состоянии Приостановлено .

  • Если предыдущие операции завершилися сбоем, драйвер фильтра должен освободить все ресурсы, выделенные в функции FilterAttach , и вернуть модуль фильтра в состояние Отсоединенный .

  • Возвращает NDIS_STATUS_SUCCESS или соответствующий код сбоя. Если драйвер возвращает код сбоя, NDIS завершает стек драйверов.

Примечание Реестр может содержать флаг , который указывает, что модуль фильтра является необязательным. Если необязательный модуль фильтра не подключается, NDIS не завершает остальную часть стека драйверов.

Драйвер фильтра не может отправлять запросы, указывать полученные данные, выполнять запросы OID или указывать состояние из состояния Присоединение . Операции отправки и получения поддерживаются в состояниях Выполнение и Приостановка . Запросы и указания состояния OID поддерживаются в состояниях Приостановлено, Перезапуск, Выполнение и Приостановка .

NDIS вызывает функцию FilterDetach для отсоединения модуля фильтра, подключенного NDIS с filterAttach. Дополнительные сведения см. в разделе Отключение модуля фильтра.