Функция NdisDirectOidRequest (ndis.h)
Функция NdisDirectOidRequest пересылает прямой запрос OID базовым драйверам, чтобы запросить возможности или состояние адаптера или задать состояние адаптера.
Синтаксис
NDIS_STATUS NdisDirectOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
Параметры
[in] NdisBindingHandle
Дескриптор, возвращаемый функцией NdisOpenAdapterEx , идентифицирующий целевой адаптер мини-порта для привязки.
[in] OidRequest
Указатель на структуру NDIS_OID_REQUEST , указывающую операцию, запрашиваемую с заданным кодом OID_Xxx для запроса состояния адаптера или задания состояния адаптера.
Возвращаемое значение
Базовый драйвер определяет, какой код NDIS_STATUS_XXXвозвращает NdisDirectOidRequest , но обычно это одно из следующих значений:
Код возврата | Описание |
---|---|
|
Операция запроса успешно завершена. |
|
Запрос обрабатывается асинхронно, и NDIS вызовет вызывающий объект Функция ProtocolDirectOidRequestComplete по завершении запроса. |
|
Код OID_Xxx, указанный в элементе OidNDIS_OID_REQUEST структурированного буфера в OidRequest , был недопустим или не поддерживается базовым драйвером. |
|
Значение, указанное в элементе InformationBufferLength NDIS_OID_REQUEST структурированного буфера в OidRequest , не соответствовало требованиям для заданного кода OID_Xxx . Если буфер информации был слишком мал, член BytesNeeded содержит правильное значение InformationBufferLength при возврате из NdisDirectOidRequest. |
|
Данные, предоставленные в InformationBuffer в заданной структуре NDIS_OID_REQUEST, были недопустимыми для заданного кода OID_Xxx . |
|
Базовый драйвер не поддерживает запрошенную операцию. Для NdisDirectOidRequest NDIS также может возвращать это состояние, если вызывающий драйвер не зарегистрировалФункция ProtocolDirectOidRequestComplete. |
|
Запрос не может быть удовлетворен из-за нехватки ресурсов. Как правило, это возвращаемое значение указывает, что попытка выделить память была неудачной, но это не обязательно означает, что тот же запрос, отправленный позже, будет неудачен по той же причине. |
|
Базовый драйвер попытался выполнить запрошенную операцию, обычно заданную на сетевом адаптере, но она завершилась сбоем. Например, попытка задать слишком много адресов многоадресной рассылки может привести к возврату этого значения. |
|
Базовый драйвер не выполнил запрошенную операцию, так как выполняется операция закрытия. |
|
Базовый драйвер мини-порта в настоящее время не может удовлетворить запрос, так как он в настоящее время сбрасывает затронутый сетевой адаптер. Функция ProtocolStatusEx вызываемого абонента была или будет вызвана с NDIS_STATUS_RESET_START, чтобы указать, что выполняется сброс. Это возвращаемое значение не обязательно указывает на то, что тот же запрос, отправленный позже, не будет выполнен по той же причине. |
|
Это значение обычно является неспецифичным значением по умолчанию, которое возвращается, если ни одно из более конкретных значений NDIS_STATUS_Xxx не привело к сбою запроса базового драйвера. |
Комментарии
Функцию NdisDirectOidRequest нельзя использовать для общих запросов OID. Для общих запросов OID используйте вместо него функцию NdisOidRequest . NdisDirectOidRequest можно использовать только для OID, которые NDIS поддерживает для использования с прямым интерфейсом OID. Например, можно использовать следующие идентификаторы OID:
OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SAДрайвер протокола должен выделить достаточно памяти для хранения буфера информации, связанного с указанным OID. Драйвер также должен выделить и настроить буфер в параметре OidRequest перед вызовом NdisDirectOidRequest. Оба буфера должны быть выделены из непагрегированного пула, так как базовый драйвер выполняется в среде IRQL при обработке запроса.
NdisDirectOidRequest пересылает запрос базовым драйверам или обрабатывает сам запрос. Если драйвером следующего уровня является промежуточный драйвер NDIS, он может вызвать NdisDirectOidRequest с собственным запросом OID, прежде чем выполнять запрос, который изначально отправлен драйвером более высокого уровня.
Драйвер, вызывающий NdisDirectOidRequest , должен зарегистрироватьФункция ProtocolDirectOidRequestComplete.
Интерфейс прямого запроса OID аналогичен общему интерфейсу запроса OID. Дополнительные сведения об отправке общих запросов см. в разделе NdisOidRequest.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.1 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |