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


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).

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

Примечание Драйвер overlying может задать флаги 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

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

NDIS_STATUS_INVALID_LENGTH

Буфер сведений был слишком коротким. NDIS задает значение DATA. METHOD_INFORMATION. Элемент BytesNeeded в NDIS_OID_REQUEST структуру до минимального требуемого размера буфера.

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_FAILURE

Сбой запроса по другим причинам.

Требования

Версия

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

Заголовок

Ntddndis.h (включая 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