OID_RECEIVE_FILTER_ALLOCATE_QUEUE

Переопределяющие драйверы выдают запросы метода идентификатора объекта (OID) OID_RECEIVE_FILTER_ALLOCATE_QUEUE для выделения очереди с начальным набором параметров конфигурации.

Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_QUEUE_PARAMETERS. После успешного возврата из запроса метода OID InformationBuffer член структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_QUEUE_PARAMETERS с новым идентификатором очереди.

Замечания

Запрос метода OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE необязателен для драйверов минипорта NDIS 6.20 и более поздних версий. Это обязательно для мини-драйверов, поддерживающих интерфейс очереди виртуальных машин (VMQ).

Переопределяющий драйвер инициализирует структуру NDIS_RECEIVE_QUEUE_PARAMETERS с запрошенной конфигурацией очереди. NDIS назначает идентификатор очереди в QueueId член структуры NDIS_RECEIVE_QUEUE_PARAMETERS и передает запрос метода драйверу мини-порта.

Примечание Драйвер чрезмерной настройки может задать флаги NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION и NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED в элементе Flags структуры NDIS_RECEIVE_QUEUE_PARAMETERS. Другие флаги не используются для выделения очереди.

После выдачи мини-драйвера OID запроса OID_RECEIVE_FILTER_ALLOCATE_QUEUE и его успешного обработки очередь находится в состоянии приостановки.

Для изменения параметров очереди или освобождения очереди драйвер должен использовать идентификатор очереди, который NDIS предоставляет в последующих запросах OID, например для изменения параметров очереди или освобождения очереди. Идентификатор очереди также включается в данные вне диапазона (OOB) для всех NET_BUFFER_LIST структур, связанных с очередью. Драйверы используют макрос NET_BUFFER_LIST_RECEIVE_QUEUE_ID для получения идентификатора очереди в структуре NET_BUFFER_LIST.

Когда NDIS получает запрос OID для выделения очереди получения, он проверяет параметры очереди. После того как NDIS выделяет необходимые ресурсы и идентификатор очереди, он отправляет запрос OID на базовый минипорт-драйвер. Идентификатор очереди является уникальным для связанного сетевого адаптера.

Если минипорт-драйвер может успешно выделить необходимые программные и аппаратные ресурсы для очереди получения, он завершает запрос OID, возвращая NDIS_STATUS_SUCCESS.

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

После выделения одной или нескольких очередей получения и при необходимости задает начальные фильтры, необходимо задать OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE задать запросы OID, чтобы уведомить драйвер минипорта о том, что выделение завершено для текущего пакета очередей получения.

Минипорт-драйвер не должен хранить пакеты в очереди получения, если в этой очереди нет фильтров. Если очередь никогда не имела ни одного набора фильтров, либо все фильтры были удалены, очередь должна быть пуста, и все пакеты должны быть удалены. То есть пакеты не указываются в стеке драйверов или хранятся в очереди.

Более избыточные драйверы используют запросы OID OID_RECEIVE_FILTER_FREE_QUEUE для освобождения очередей, которые они выделяют.

Коды состояния возврата

NDIS или драйвер минипорта возвращает один из следующих кодов состояния для запроса метода OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.

Код состояния Описание

NDIS_STATUS_SUCCESS

Очередь была успешно выделена. Буфер сведений содержит обновленную структуру NDIS_RECEIVE_QUEUE_PARAMETERS.

NDIS_STATUS_PENDING

Запрос ожидает завершения. Окончательный код состояния и результаты будут переданы обработчику завершения запроса OID вызывающего объекта.

NDIS_STATUS_INVALID_PARAMETER

Один или несколько параметров, предоставленных драйвером, не допустимым.

NDIS_STATUS_INVALID_LENGTH

Буфер информации был слишком коротким. NDIS задает DATA.METHOD_INFORMATION.элемент BytesNeededed в структуре NDIS_OID_REQUEST до минимального размера буфера, который требуется.

NDIS_STATUS_NOT_SUPPORTED

Версия NDIS мини-порта более ранняя, чем версия 6.20.

NDIS_STATUS_FAILURE

Запрос завершился ошибкой по другим причинам.

Требования

Версия

Поддерживается в NDIS 6.20 и более поздних версиях.

Заголовок

Ntddndis.h (include Ndis.h)

См. также

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS