Состояния адаптера драйвера miniport
Для каждого управляемого адаптера мини-порта драйвер NDIS должен поддерживать следующий набор рабочих состояний:
Остановился
Завершить работу
Инициализация
Пауза
перезапуск;
Запущен
Приостановка
На следующем рисунке показаны взаимосвязи между этими состояниями.
Примечание Операция сброса не влияет на рабочие состояния адаптера мини-порта. Кроме того, состояние адаптера может измениться во время выполнения операции сброса. Например, NDIS может вызывать обработчик приостановки драйвера при выполнении операции сброса. В этом случае драйвер может выполнить операцию сброса или приостановки в любом порядке, следуя обычным требованиям для каждой операции. Для операции сброса драйвер может не передавать пакеты запросов или оставить их в очереди и завершить их позже. Однако следует отметить, что драйвер не может завершить операцию приостановки, пока его передаваемые пакеты находятся в состоянии ожидания.
Следующие состояния адаптера определяются:
Остановлено — это начальное состояние всех адаптеров мини-портов. Если адаптер мини-порта находится в состоянии Остановлено, а NDIS вызывает функцию MiniportInitializeEx драйвера для инициализации адаптера минипорта, адаптер минипорта переходит в состояние Инициализация. Если MiniportInitializeEx завершается сбоем, адаптер мини-порта возвращается в состояние Остановлено. Когда адаптер мини-порта находится в состоянии Приостановка и NDIS вызывает функцию MiniportHaltEx , адаптер мини-порта возвращается в состояние Остановлено.
Адаптер мини-порта в состоянии Завершения работы нельзя использовать, пока система не будет выключена и перезапущена. Если адаптер мини-порта находится в состоянии Приостановлено, Перезапуск, Выполняется или Приостановка и NDIS вызывает функцию MiniportShutdownEx драйвера мини-порта, адаптер мини-порта переходит в состояние Завершение работы.
В состоянии Инициализация драйвер мини-порта завершает все операции, необходимые для инициализации адаптера мини-порта. Когда адаптер мини-порта находится в состоянии Остановлено, а NDIS вызывает функцию MiniportInitializeEx драйвера мини-порта, адаптер минипорта переходит в состояние инициализации. Если miniportInitializeEx завершается успешно, адаптер мини-порта переходит в состояние Приостановлено. Если MiniportInitializeEx завершается сбоем, адаптер мини-порта возвращается в состояние Остановлено.
Если адаптер мини-порта находится в состоянии Приостановка , драйвер мини-порта не указывает на полученные сетевые данные и не принимает запросы на отправку. Если адаптер мини-порта находится в состоянии Приостановка и операция приостановки завершена, адаптер минипорта переходит в состояние Приостановлено. Если адаптер мини-порта находится в состоянии инициализации и MiniportInitializeEx успешно, адаптер мини-порта переходит в состояние Приостановлено. Когда NDIS вызывает функцию MiniportRestart драйвера miniport , адаптер мини-порта переходит из состояния Приостановлено в состояние Перезапуск. Когда NDIS вызывает функцию MiniportHaltEx драйвера мини-порта, адаптер мини-порта переходит из состояния Приостановлено в состояние Остановлено.
В состоянии Перезапуск драйвер мини-порта завершает все операции, необходимые для перезапуска операций отправки и получения для адаптера мини-порта. Когда адаптер мини-порта находится в состоянии Приостановлено и NDIS вызывает функцию MiniportRestart драйвера, адаптер мини-порта переходит в состояние Перезапуск. Если перезагрузка завершится сбоем, адаптер мини-порта возвращается в состояние Приостановлено. Если перезагрузка выполнена успешно, адаптер мини-порта переходит в состояние Выполняется.
В состоянии Выполняется драйвер мини-порта выполняет обычную обработку отправки и получения для адаптера мини-порта. Когда адаптер мини-порта находится в состоянии перезапуска и драйвер готов к выполнению операций отправки и получения, адаптер мини-порта переходит в состояние Выполняется.
В состоянии Приостановка драйвер мини-порта завершает все операции, необходимые для остановки операций отправки и получения для адаптера мини-порта. Драйвер должен дождаться, пока NDIS вернет все невыполненные признаки получения. Если адаптер мини-порта находится в состоянии Выполняется и NDIS вызывает функцию MiniportPause драйвера, адаптер минипорта переходит в состояние Приостановка. Драйвер мини-порта не может выполнить операцию приостановки. После завершения операции приостановки адаптер мини-порта переходит в состояние Приостановлено.