Функция NdisOidRequest (ndis.h)

Функция NdisOidRequest пересылает запрос к базовым драйверам для запроса возможностей или состояния адаптера или задания состояния адаптера.

Синтаксис

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

Параметры

[in] NdisBindingHandle

Дескриптор, возвращаемый функцией NdisOpenAdapterEx , которая идентифицирует целевой адаптер в привязке.

[in] OidRequest

Указатель на структуру NDIS_OID_REQUEST , указывающую операцию, запрошенную с заданным кодом OID_XXX для запроса состояния адаптера или для задания состояния адаптера.

Возвращаемое значение

Базовый драйвер определяет, какой код NDIS_STATUS_XXX возвращает NdisOidRequest , но обычно это одно из следующих значений:

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция запроса успешно завершена.
NDIS_STATUS_PENDING
Запрос обрабатывается асинхронно, и NDIS вызовет вызывающий объект Функция ProtocolOidRequestComplete по завершении запроса.
NDIS_STATUS_INVALID_OID
Код OID_XXX, указанный в элементе OidNDIS_OID_REQUEST структурированного буфера в OidRequest , недопустим или не поддерживается базовым драйвером.
NDIS_STATUS_INVALID_LENGTH или NDIS_STATUS_BUFFER_TOO_SHORT
Значение, указанное в элементе InformationBufferLength NDIS_OID_REQUEST структурированного буфера в OidRequest , не соответствует требованиям для заданного кода OID_XXX . Если информационный буфер слишком мал, член BytesNeeded содержит правильное значение InformationBufferLength при возврате из NdisOidRequest.
NDIS_STATUS_INVALID_DATA
Данные, предоставленные в InformationBuffer в заданной структуре NDIS_OID_REQUEST, недопустимы для заданного кода OID_XXX .
NDIS_STATUS_NOT_SUPPORTED или NDIS_STATUS_NOT_RECOGNIZED
Базовый драйвер не поддерживает запрошенную операцию.
NDIS_STATUS_RESOURCES
Запрос не может быть удовлетворен из-за нехватки ресурсов. Как правило, это возвращаемое значение указывает, что попытка выделить память завершилась неудачно, но это не обязательно означает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине.
NDIS_STATUS_NOT_ACCEPTED
Базовый драйвер попытался выполнить запрошенную операцию, обычно заданную на сетевом адаптере, но она не удалась. Например, попытка задать слишком много адресов многоадресной рассылки может привести к возврату этого значения.
NDIS_STATUS_CLOSING или NDIS_STATUS_CLOSING_INDICATING
Базовый драйвер не выполнил запрошенную операцию, так как выполняется операция закрытия.
NDIS_STATUS_RESET_IN_PROGRESS
Базовый драйвер мини-порта в настоящее время не может удовлетворить запрос, так как он в настоящее время сбрасывает затронутый сетевой адаптер. Функция ProtocolStatusEx вызываемого абонента была или будет вызвана с NDIS_STATUS_RESET_START, чтобы указать, что выполняется сброс. Это возвращаемое значение не обязательно указывает на то, что тот же запрос, отправленный позже, не будет выполнен по той же причине.
NDIS_STATUS_FAILURE
Это значение обычно является неспецифичным значением по умолчанию, которое возвращается, если ни один из более конкретных NDIS_STATUS_XXX не привел к сбою запроса базового драйвера.

Комментарии

Драйвер протокола должен выделить достаточно памяти для хранения буфера информации, связанного с указанным OID. Драйвер также должен выделить и настроить буфер в OidRequest перед вызовом NdisOidRequest. Оба буфера должны быть выделены из непагрегированного пула, так как базовый драйвер выполняется в среде IRQL при обработке запроса.

NdisOidRequest перенаправит запрос базовым драйверам или обрабатывает сам запрос. Если драйвером следующего уровня является промежуточный драйвер NDIS, он может вызвать NdisOidRequest с собственным запросом, зависящим от OID, прежде чем выполнять запрос, изначально отправленный драйвером более высокого уровня.

Некоторые возвращаемые ошибки можно восстановить, в том числе следующие:

То есть драйвер может соответствующим образом изменить пакет в OidRequest , чтобы исправить код OID_XXX , размер или содержимое буфера в InformationBuffer и повторно отправить пакет запроса в NdisOidRequest. Тот же пакет может быть удовлетворен при повторной отправке в NdisOidRequest , если исходный вызов указывает на выполнение сброса или что нехватка ресурсов, которая может быть временной, препятствует выполнению этого запроса.

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

Дополнительные сведения об общих и зависящих от носителя идентификаторах OID и связанных с ними буферах информации см. в разделе NDIS OID.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_OID_Function(ndis)

См. также раздел

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx