Состояния очереди виртуальной машины NDIS
В этом разделе представлен обзор операционных состояний очередей виртуальных машин NDIS (VMQs). Дополнительные сведения о состояниях очереди см. в разделе Состояния очереди и операции в разделе Написание драйверов VMQ .
Для каждой очереди сетевой адаптер должен поддерживать следующий набор рабочих состояний:
Не определено.
Allocated
Присвойте параметру
Пауза
Запущен
Остановка DMA
Освобождение
На следующем рисунке показаны связи между этими состояниями.
Следующие состояния адаптера определяются:
Неопределенный
Undefined — это начальное состояние очереди. В этом состоянии очередь не выделяется. Очередь (за исключением очереди по умолчанию, которая всегда существует) не определена, пока драйвер мини-порта не получит запрос на выделение очереди. Кроме того, она не определена после завершения бесплатной операции и завершения всех начатых признаков получения.
Allocated
Очередь находится в состоянии "Выделено " после запроса на выделение и до установки фильтров в очереди. Фильтр также может ввести состояние "Выделено", если очередь находится в состоянии "Задать", а последний фильтр очищается в очереди. Очередь переходит в состояние Приостановлено, если драйвер мини-порта получает полный запрос на выделение, пока драйвер мини-порта находится в состоянии "Выделено". Очередь переходит в состояние Остановить DMA, если драйвер мини-порта получает запрос на бесплатную очередь.
Присвойте параметру
В состоянии Set выделяется очередь и в ней установлен по крайней мере один фильтр, но драйвер мини-порта еще не получил полный идентификатор OID выделения. Очередь переходит в состояние Выполняется, если получает полный запрос на выделение. Очередь переходит в состояние "Выделено", если последний фильтр в очереди очищен. Обратите внимание, что очередь не может быть освобождена, если в ней установлены фильтры.
Пауза
В состоянии Приостановка очередь выделяется, но ее драйвер мини-порта не указывает на полученные пакеты, так как в очереди не заданы фильтры. Драйвер мини-порта может перейти в состояние Приостановлено либо из состояния Выделено, либо из состояния Выполняется. Очередь переходит в состояние Выполняется при получении запроса на набор фильтров. Очередь переходит в состояние Остановить DMA при получении запроса на бесплатную очередь.
Запущена
В состоянии Выполняется очередь имеет заданные фильтры, выделение очереди завершено, а сетевой адаптер указывает на получение пакетов. Очередь переходит в состояние Приостановлено, если последний фильтр в очереди очищен. Обратите внимание, что очередь не может быть освобождена, если в ней установлены фильтры. Кроме того, драйвер мини-порта может остановить DMA, если последний фильтр очищен. Однако драйвер мини-порта не должен отправлять индикатор остановленного состояния DMA в этом случае.
Остановка DMA
В состоянии Остановить DMA драйвер мини-порта получил запрос на бесплатную очередь, и действие DMA должно быть остановлено. Драйвер мини-порта должен отправить сигнал о состоянии остановки DMA. После того как драйвер мини-порта отправит сообщение о состоянии, очередь находится в состоянии Освобождения. Обратите внимание, что DMA, вероятно, уже остановлено при очистке последнего фильтра. Однако драйвер мини-порта должен отправлять указание состояния только при получении запроса на бесплатную очередь.
Освобождение
В состоянии Освобождения драйвер мини-порта ожидает завершения всех невыполненных показателей получения в очереди и освобождает ресурсы, связанные с очередью. После освобождения всех ресурсов очередь переходит в неопределенное состояние.