Состояния адаптера минипорт-драйвера

Для каждого минипорт-адаптера, которым он управляет, минипорт-драйвер NDIS должен поддерживать следующий набор операционных состояний:

  • Остановился

  • Выключение

  • Инициализация

  • Пауза

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

  • Бег

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

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

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

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

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

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

Минипорт-адаптер в состоянии выключения не может использоваться до завершения работы системы и перезапуска. Когда минипортовый адаптер находится в состоянии "Приостановка", "Перезапуск", "Запуск" или "Приостановка", и NDIS вызывает функцию минипорт-драйвера MiniportShutdownEx, адаптер минипорта переходит в состояние завершения работы.

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

Если минипортовый адаптер находится в состоянии приостановки, минипорт-драйвер не указывает полученные сетевые данные и не принимает запросы на отправку. Когда минипорт-адаптер находится в состоянии приостановки и операция приостановки завершается, минипорт-адаптер входит в состояние "Приостановлено". Если минипорт-адаптер находится в состоянии 'Инициализация' и MiniportInitializeEx успешно, минипорт-адаптер переходит в состояние 'Приостановлено'. Когда NDIS вызывает функцию MiniportRestart драйвера минипорта, адаптер минипорта переходит из состояния паузы в состояние перезапуска. Когда NDIS вызывает функцию минипорт-драйвера MiniportHaltEx, адаптер минипорта переходит из состояния "Приостановлено" в состояние "Остановлено".

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

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

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

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

драйверов минипорта NDIS