Присоединение модуля фильтра
Чтобы инициировать процесс вставки модуля фильтра в стек драйверов, 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 . Дополнительные сведения см. в разделе Отсоединение модуля фильтра.