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


Состояния очереди виртуальной машины NDIS

В этом разделе представлен обзор операционных состояний очередей виртуальных машин NDIS (VMQs). Дополнительные сведения о состояниях очереди см. в разделе Состояния очереди и операции в разделе Написание драйверов VMQ .

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

  • Не определено.

  • Allocated

  • Присвойте параметру

  • Пауза

  • Запущен

  • Остановка DMA

  • Освобождение

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

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

Следующие состояния адаптера определяются:

Неопределенный
Undefined — это начальное состояние очереди. В этом состоянии очередь не выделяется. Очередь (за исключением очереди по умолчанию, которая всегда существует) не определена, пока драйвер мини-порта не получит запрос на выделение очереди. Кроме того, она не определена после завершения бесплатной операции и завершения всех начатых признаков получения.

Allocated
Очередь находится в состоянии "Выделено " после запроса на выделение и до установки фильтров в очереди. Фильтр также может ввести состояние "Выделено", если очередь находится в состоянии "Задать", а последний фильтр очищается в очереди. Очередь переходит в состояние Приостановлено, если драйвер мини-порта получает полный запрос на выделение, пока драйвер мини-порта находится в состоянии "Выделено". Очередь переходит в состояние Остановить DMA, если драйвер мини-порта получает запрос на бесплатную очередь.

Присвойте параметру
В состоянии Set выделяется очередь и в ней установлен по крайней мере один фильтр, но драйвер мини-порта еще не получил полный идентификатор OID выделения. Очередь переходит в состояние Выполняется, если получает полный запрос на выделение. Очередь переходит в состояние "Выделено", если последний фильтр в очереди очищен. Обратите внимание, что очередь не может быть освобождена, если в ней установлены фильтры.

Пауза
В состоянии Приостановка очередь выделяется, но ее драйвер мини-порта не указывает на полученные пакеты, так как в очереди не заданы фильтры. Драйвер мини-порта может перейти в состояние Приостановлено либо из состояния Выделено, либо из состояния Выполняется. Очередь переходит в состояние Выполняется при получении запроса на набор фильтров. Очередь переходит в состояние Остановить DMA при получении запроса на бесплатную очередь.

Запущена
В состоянии Выполняется очередь имеет заданные фильтры, выделение очереди завершено, а сетевой адаптер указывает на получение пакетов. Очередь переходит в состояние Приостановлено, если последний фильтр в очереди очищен. Обратите внимание, что очередь не может быть освобождена, если в ней установлены фильтры. Кроме того, драйвер мини-порта может остановить DMA, если последний фильтр очищен. Однако драйвер мини-порта не должен отправлять индикатор остановленного состояния DMA в этом случае.

Остановка DMA
В состоянии Остановить DMA драйвер мини-порта получил запрос на бесплатную очередь, и действие DMA должно быть остановлено. Драйвер мини-порта должен отправить сигнал о состоянии остановки DMA. После того как драйвер мини-порта отправит сообщение о состоянии, очередь находится в состоянии Освобождения. Обратите внимание, что DMA, вероятно, уже остановлено при очистке последнего фильтра. Однако драйвер мини-порта должен отправлять указание состояния только при получении запроса на бесплатную очередь.

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