Функция 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 вызовет вызывающий объект Функция ProtocolOidRequestComplete по завершении запроса. |
|
Код OID_XXX, указанный в элементе OidNDIS_OID_REQUEST структурированного буфера в OidRequest , недопустим или не поддерживается базовым драйвером. |
|
Значение, указанное в элементе InformationBufferLength NDIS_OID_REQUEST структурированного буфера в OidRequest , не соответствует требованиям для заданного кода OID_XXX . Если информационный буфер слишком мал, член BytesNeeded содержит правильное значение InformationBufferLength при возврате из NdisOidRequest. |
|
Данные, предоставленные в InformationBuffer в заданной структуре NDIS_OID_REQUEST, недопустимы для заданного кода OID_XXX . |
|
Базовый драйвер не поддерживает запрошенную операцию. |
|
Запрос не может быть удовлетворен из-за нехватки ресурсов. Как правило, это возвращаемое значение указывает, что попытка выделить память завершилась неудачно, но это не обязательно означает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине. |
|
Базовый драйвер попытался выполнить запрошенную операцию, обычно заданную на сетевом адаптере, но она не удалась. Например, попытка задать слишком много адресов многоадресной рассылки может привести к возврату этого значения. |
|
Базовый драйвер не выполнил запрошенную операцию, так как выполняется операция закрытия. |
|
Базовый драйвер мини-порта в настоящее время не может удовлетворить запрос, так как он в настоящее время сбрасывает затронутый сетевой адаптер. Функция ProtocolStatusEx вызываемого абонента была или будет вызвана с NDIS_STATUS_RESET_START, чтобы указать, что выполняется сброс. Это возвращаемое значение не обязательно указывает на то, что тот же запрос, отправленный позже, не будет выполнен по той же причине. |
|
Это значение обычно является неспецифичным значением по умолчанию, которое возвращается, если ни один из более конкретных 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) |