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


Состояния модуля драйвера фильтра

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

  • Отсоединен

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

  • Пауза

  • перезапуск;

  • Запущен

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

На следующем рисунке показаны связи между этими состояниями.

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

Ниже описано, как определить состояния модуля фильтра.

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

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

Пауза
Если модуль фильтра находится в состоянии Приостановлено , модуль фильтра не выполняет операции отправки или получения. Если модуль фильтра находится в состоянии Присоединение и FilterAttach успешно, модуль фильтра переходит в состояние Приостановлено . Когда модуль фильтра находится в состоянии Приостановка и операция приостановки завершается, модуль фильтра переходит в состояние Приостановлено . Когда модуль фильтра находится в состоянии Приостановлено и NDIS вызывает функцию FilterRestart драйвера фильтра, модуль фильтра переходит в состояние Перезапуск . Когда модуль фильтра находится в состоянии Приостановлено и NDIS вызывает обработчик FilterDetach драйвера, модуль фильтра переходит в состояние Отсоединенный .

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

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

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

Управление стеком драйверов

Драйверы фильтров NDIS