Функция 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_XXXNdisDirectOidReque st возвращается, но обычно это одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Операция запроса успешно завершена. |
|
Запрос обрабатывается асинхронно, и NDIS вызовет вызывающий объект функция ProtocolDirectOidRequestComplete при завершении запроса. |
|
Код OID_Xxx, указанный в элементе Oid элемента NDIS_OID_REQUEST-структурированного буфера в OidRequest, был недопустимым или неподдерживаемым базовым драйвером. |
|
Значение, указанное в элементе InformationBufferLength буфера NDIS_OID_REQUEST в OidRequest, не соответствовало требованиям для заданного кода OID_Xxx. Если буфер информации был слишком мал, элемент BytesNeeded содержит правильное значение для InformationBufferLength при возврате из NdisDirectOidRequest. |
|
Данные, предоставленные в InformationBuffer в данной структуре NDIS_OID_REQUEST, недопустимы для заданного кода OID_Xxx. |
|
Базовый драйвер не поддерживает запрошенную операцию. Для NdisDirectOidRequestNDIS также может вернуть это состояние, если вызывающий драйвер не зарегистрировал функция ProtocolDirectOidRequestComplete. |
|
Запрос не может быть удовлетворен из-за нехватки ресурсов. Как правило, это возвращаемое значение указывает, что попытка выделения памяти была неудачной, но не обязательно указывает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине. |
|
Базовый драйвер попытался выполнить запрошенную операцию, как правило, набор на сетевом адаптере, но произошел сбой. Например, попытка задать слишком много адресов многоадресной рассылки может привести к возврату этого значения. |
|
Базовый драйвер завершился ошибкой запрошенной операции, так как выполняется закрытая операция. |
|
Базовый минипорт-драйвер не может удовлетворить запрос в настоящее время, так как он в настоящее время сбрасывает затронутый сетевой адаптер. Функция ProtocolStatusEx вызываемой вызывающей стороны или вызовется с NDIS_STATUS_RESET_START, чтобы указать, что сброс выполняется. Это возвращаемое значение не обязательно указывает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине. |
|
Обычно это значение является неконкретным значением по умолчанию, возвращаемым, когда ни одно из более конкретных NDIS_STATUS_xxx значений привело к сбою запроса базовым драйвером. |
Замечания
Функцию NdisDirectOidRequest нельзя использовать для общих запросов OID. Для общих запросов OID используйте вместо этого функцию NdisOidRequest. NdisDirectOidRequest можно использовать только для OID, поддерживаемых NDIS для использования с прямым интерфейсом OID. Например, можно использовать следующие OID:
OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SAДрайвер протокола должен выделить достаточно памяти для хранения буфера информации, связанного с указанным OID. Драйвер также должен выделить и настроить буфер в параметре OidRequest перед вызовом NdisDirectOidRequest. Оба буфера должны быть выделены из непагрегированного пула, так как базовый драйвер выполняется при вызове IRQL во время обработки запроса.
NdisDirectOidRequest пересылает запрос на базовые драйверы или обрабатывает сам запрос. Если следующий драйвер является промежуточным драйвером NDIS, промежуточный драйвер может вызывать NdisDirectOidRequest с собственным запросом OID, прежде чем завершить запрос, отправленный драйвером более высокого уровня.
Драйвер, вызывающий NdisDirectOidRequest, должен зарегистрировать функция ProtocolDirectOidRequestComplete.
Интерфейс прямого запроса OID аналогичен общему интерфейсу запроса OID. Дополнительные сведения о выпуске общих запросов см. в NdisOidRequest.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается в NDIS 6.1 и более поздних версиях. |
целевая платформа | Настольный |
заголовка | ndis.h (include Ndis.h) |
библиотеки | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |