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


Фильтрация состояний и операций модуля

Драйвер фильтра должен поддерживать следующие рабочие состояния для каждого модуля фильтра (экземпляра драйвера фильтра), которым управляет драйвер:

Отсоединен
Отсоединенный — это начальное состояние модуля фильтра. Если модуль фильтра находится в этом состоянии, NDIS может вызвать функцию FilterAttach драйвера фильтра, чтобы подключить модуль фильтра к стеку драйверов.

присоединения
В состоянии Присоединение драйвер фильтра готовится подключить модуль фильтра к стеку драйверов.

Пауза
В состоянии Приостановлено драйвер фильтра не выполняет операции отправки или получения.

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

Запущена
В состоянии Выполняется драйвер фильтра выполняет обычную обработку отправки и получения для модуля фильтра.

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

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

Событие/состояние Отсоединен присоединения Пауза перезапуск; Запущен Приостановка

Подключение фильтра

присоединения

Присоединение завершено

Пауза

Отсоединение фильтра

Отсоединен

Перезапуск фильтра

перезапуск;

Перезапуск завершен

Запущен

Приостановка фильтра

Приостановка

Приостановка завершена

Пауза

Сбой подключения

Отсоединен

Сбой перезапуска

Пауза

Отправка и получение

Запущен

Приостановка

Запросы OID

Пауза

перезапуск;

Запущен

Приостановка

Основные события драйвера фильтра определяются следующим образом:

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

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

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

Перезапуск фильтра
NDIS вызвал функцию FilterRestart драйвера для перезапуска приостановленного модуля фильтра. Дополнительные сведения см. в разделе Запуск модуля фильтра.

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

Приостановка фильтра
NDIS вызвал функцию FilterPause драйвера для приостановки модуля фильтра. Дополнительные сведения см. в разделе Приостановка модуля фильтра.

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

Сбой подключения
Если NDIS вызывает функцию FilterAttach драйвера и операция присоединения завершается ошибкой (например, из-за недоступности необходимых ресурсов), модуль фильтра возвращается в состояние Отсоединенный .

Сбой перезапуска
Если NDIS вызывает функцию FilterRestart драйвера и попытка перезапуска завершается ошибкой, модуль фильтра возвращается в состояние Приостановлено .

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

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