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


Состояния привязки драйвера протокола

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

  • Без привязки

  • Открытие

  • Запущен

  • Закрытие

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

  • Пауза

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

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

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

Ниже описаны состояния привязки драйвера протокола.

Состояние Unbound является начальным состоянием привязки. В этом состоянии драйвер протокола ожидает, пока NDIS вызовет функцию ProtocolBindAdapterEx . После вызова NDIS ProtocolBindAdapterEx привязка переходит в состояние Открытия. После завершения операции отмены привязки привязка возвращается в состояние Unbound из состояния Закрытия.

В состоянии Открытие драйвер протокола выделяет ресурсы для привязки и пытается открыть адаптер минипорта. После вызова NDIS функции ProtocolBindAdapterEx драйвера привязка переходит в состояние Открытия. Если драйверу протокола не удается выполнить привязку к адаптеру минипорта, привязка возвращается в состояние Unbound (Не привязано). Если драйвер успешно привязывается к адаптеру минипорта, привязка переходит в состояние Приостановлено.

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

В состоянии Закрытие драйвер протокола закрывает привязку к адаптеру мини-порта, а затем освобождает ресурсы для привязки. После вызова NDIS функции ProtocolUnbindAdapterEx драйвера протокола привязка переходит в состояние Закрытия. После того как драйвер протокола завершит операции отмены привязки, привязка переходит в состояние Unbound (Не привязано).

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

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

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

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

Драйверы протокола NDIS