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

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

  • Несвязанный

  • Открытие

  • Бег

  • Закрытие

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

  • Приостановлено

  • Перезагрузка

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

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

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

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

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

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

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

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

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

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

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

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