Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переопределяющие драйверы выдают запросы метода идентификатора объекта (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) |
См. также
NET_BUFFER_LIST_RECEIVE_QUEUE_ID