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) |
См. также раздел
NET_BUFFER_LIST_RECEIVE_QUEUE_ID