Фильтрация состояний и операций модуля
Драйвер фильтра должен поддерживать следующие рабочие состояния для каждого модуля фильтра (экземпляра драйвера фильтра), которым управляет драйвер:
Отсоединен
Отсоединенный — это начальное состояние модуля фильтра. Если модуль фильтра находится в этом состоянии, NDIS может вызвать функцию FilterAttach драйвера фильтра, чтобы подключить модуль фильтра к стеку драйверов.
присоединения
В состоянии Присоединение драйвер фильтра готовится подключить модуль фильтра к стеку драйверов.
Пауза
В состоянии Приостановлено драйвер фильтра не выполняет операции отправки или получения.
Перезагрузки
В состоянии Перезапуск драйвер фильтра завершает все операции, необходимые для перезапуска операций отправки и получения для модуля фильтра.
Запущена
В состоянии Выполняется драйвер фильтра выполняет обычную обработку отправки и получения для модуля фильтра.
Приостановка
В состоянии Приостановка драйвер фильтра завершает все операции, необходимые для остановки операций отправки и получения для модуля фильтра.
В следующей таблице заголовки представляют собой состояния модуля фильтра. Основные события перечислены в первом столбце. Остальные записи в таблице указывают следующее состояние, которое модуль фильтра вводит после возникновения события в состоянии. Пустые записи представляют недопустимые сочетания событий и состояний.
Событие/состояние | Отсоединен | присоединения | Пауза | перезапуск; | Запущен | Приостановка |
---|---|---|---|---|---|---|
Подключение фильтра |
присоединения |
|||||
Присоединение завершено |
Пауза |
|||||
Отсоединение фильтра |
Отсоединен |
|||||
Перезапуск фильтра |
перезапуск; |
|||||
Перезапуск завершен |
Запущен |
|||||
Приостановка фильтра |
Приостановка |
|||||
Приостановка завершена |
Пауза |
|||||
Сбой подключения |
Отсоединен |
|||||
Сбой перезапуска |
Пауза |
|||||
Отправка и получение |
Запущен |
Приостановка |
||||
Запросы OID |
Пауза |
перезапуск; |
Запущен |
Приостановка |
Основные события драйвера фильтра определяются следующим образом:
Подключение фильтра
NDIS называется функцией FilterAttach драйвера для присоединения модуля фильтра к стеку драйверов. Дополнительные сведения о присоединении модуля фильтра см. в разделе Присоединение модуля фильтра.
Присоединение завершено
Если модуль фильтра находится в состоянии Присоединение и драйвер фильтра завершает инициализацию всех ресурсов, необходимых модулю фильтра, модуль фильтра переходит в состояние Приостановлено .
Отсоединение фильтра
NDIS вызвал функцию FilterDetach драйвера для отсоединения модуля фильтра от стека драйверов. Дополнительные сведения см. в разделе Отключение модуля фильтра.
Перезапуск фильтра
NDIS вызвал функцию FilterRestart драйвера для перезапуска приостановленного модуля фильтра. Дополнительные сведения см. в разделе Запуск модуля фильтра.
Перезапуск завершен
Когда модуль фильтра находится в состоянии Перезапуск и драйвер готов к выполнению операций отправки и получения, модуль фильтра переходит в состояние Выполняется .
Приостановка фильтра
NDIS вызвал функцию FilterPause драйвера для приостановки модуля фильтра. Дополнительные сведения см. в разделе Приостановка модуля фильтра.
Приостановка завершена
После завершения драйвером всех операций, необходимых для остановки операций отправки и получения, операция приостановки завершается, а модуль фильтра находится в состоянии Приостановлено .
Сбой подключения
Если NDIS вызывает функцию FilterAttach драйвера и операция присоединения завершается ошибкой (например, из-за недоступности необходимых ресурсов), модуль фильтра возвращается в состояние Отсоединенный .
Сбой перезапуска
Если NDIS вызывает функцию FilterRestart драйвера и попытка перезапуска завершается ошибкой, модуль фильтра возвращается в состояние Приостановлено .
Операции отправки и получения
Драйвер может обрабатывать операции отправки и получения в состояниях Выполнение и Приостановка . Дополнительные сведения об операциях отправки и получения см. в разделе Фильтрация операций отправки и получения модуля.
Запросы OID
Драйвер может обрабатывать запросы OID в состояниях "Выполняется", "Перезапуск", "Приостановлено" и "Приостановка". Дополнительные сведения о запросах OID см. в разделе Фильтрация запросов OID модуля.