Функция NdisRequest (ndis.h)
Примечание NDIS 5. x устарел и заменен NDIS 6. x. Сведения о разработке новых драйверов NDIS см. в статье Сетевые драйверы, начиная с Windows Vista. Сведения о переносе NDIS 5. драйверов x в NDIS 6. xсм. перенос драйверов NDIS 5.x в NDIS 6.0.
NdisRequest перенаправит запрос базовому драйверу, который запрашивает возможности или состояние сетевой карты или задает состояние его сетевой карты.
Синтаксис
void NdisRequest(
[out] PNDIS_STATUS Status,
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_REQUEST NdisRequest
);
Параметры
[out] Status
Указатель на переменную, предоставляемую вызывающим, которая устанавливается при возврате из этой функции. Базовый драйвер определяет, какой возвращается NDIS_STATUS_XXX, но обычно это одно из следующих значений:
NDIS_STATUS_SUCCESS
Запрошенная операция успешно завершена.NDIS_STATUS_PENDING
Запрос обрабатывается асинхронно, и функция протоколаRequestComplete вызываемого абонента будет вызываться при завершении.NDIS_STATUS_INVALID_OID
Код OID_XXX, указанный в элементе Oid буфера, структурированного NDIS_REQUEST в NdisRequest, является недопустимым или неподдерживаемым базовым драйвером.NDIS_STATUS_INVALID_LENGTH или NDIS_STATUS_BUFFER_TOO_SHORT
Значение, указанное в InformationBufferLength элемента буфера NDIS_REQUEST структурированного в NdisRequest, не соответствует требованиям для заданного кода OID_XXX. Если буфер информации слишком мал, элемент BytesNeeded содержит правильное значение для InformationBufferLength при возврате из NdisRequest.NDIS_STATUS_INVALID_DATA
Данные, предоставленные в InformationBuffer в данной структуре NDIS_REQUEST, недопустимы для заданного кода OID_XXX.NDIS_STATUS_NOT_SUPPORTED или NDIS_STATUS_NOT_RECOGNIZED
Базовый драйвер не поддерживает запрошенную операцию.NDIS_STATUS_RESOURCES
Запрос не может быть удовлетворен из-за нехватки ресурсов. Как правило, этот возврат указывает, что попытка выделения памяти была неудачной, но не обязательно указывает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине.NDIS_STATUS_NOT_ACCEPTED
Базовый драйвер попытался выполнить запрошенную операцию, как правило, набор на сетевом адаптере, но не удалось выполнить netcard. Например, попытка задать слишком много адресов многоадресной рассылки может привести к возврату этого значения.NDIS_STATUS_CLOSING или NDIS_STATUS_CLOSING_INDICATING
Базовый драйвер завершился ошибкой запрошенной операции, так как выполняется закрытие.NDIS_STATUS_RESET_IN_PROGRESS
Базовый драйвер сетевого адаптера не может удовлетворить запрос в настоящее время, так как он в настоящее время сбрасывает netcard. Функция ProtocolStatus вызываемой вызывающей стороны или вызовется с NDIS_STATUS_RESET_START, чтобы указать, что сброс выполняется. Это возвращаемое значение не обязательно указывает, что тот же запрос, отправленный позже, завершится ошибкой по той же причине.NDIS_STATUS_FAILURE
Обычно это значение является неспецифиченым значением по умолчанию, возвращаемым, если ни один из более конкретных NDIS_STATUS_XXX привел к сбою запроса базовым драйвером.
[in] NdisBindingHandle
Задает дескриптор, возвращаемый NdisOpenAdapter, определяющий целевой сетевой адаптер или виртуальный адаптер следующего драйвера, к которому привязан вызывающий объект.
[in] NdisRequest
Указатель на буферную структуру, указывающую операцию, запрошенную с заданным кодом OID_ XXX для запроса или набора.
Возвращаемое значение
Никакой
Замечания
Драйвер протокола должен выделить достаточно памяти для буфера информации, связанного с OID_XXX операции, которую он запрашивает. Драйвер также должен выделить и настроить буфер на NdisRequest перед вызовом NdisRequest. Оба буфера должны быть выделены из непагрегированного пула, так как базовый драйвер выполняется при вызове IRQL во время обработки запроса.
Для вызывающих устройств, размещенных выше промежуточного драйвера NDIS, NdisRequest перенаправит запрос на следующий нижний драйвер, который он возвращает сведения о своих возможностях или направляет этот драйвер для обработки конкретных функций в определяемом вызывающим способом. Если следующий драйвер является промежуточным драйвером NDIS, он может вызывать NdisRequest с собственным запросом OID перед завершением запроса, первоначально отправленного протоколом более высокого уровня.
Некоторые ошибки, возвращенные состояния, можно восстановить, включая следующие:
NDIS_STATUS_INVALID_OID
NDIS_STATUS_INVALID_LENGTH
NDIS_STATUS_BUFFER_TOO_SHORT
NDIS_STATUS_INVALID_DATA
NDIS_STATUS_RESOURCES
NDIS_STATUS_RESET_IN_PROGRESS
То есть драйвер может изменить пакет по NdisRequest соответствующим образом, чтобы исправить код OID_XXX и(или) размер или содержимое буфера в InformationBuffer и повторно отправить пакет запроса NdisRequest. Тот же пакет может быть удовлетворен при повторной отправке NdisRequest, если исходный вызов указал на сброс во время выполнения или что нехватка ресурсов, которая может быть временной, предотвратила выполнение этого запроса.
Библиотека NDIS поддерживает привязки для базовых драйверов минипорта. NDIS может возвращать сведения для запросов, относящихся к привязке, если заданный OID связан с системным типом среднего типа, для которого система предоставляет библиотеку фильтров.
Дополнительные сведения об общих и связанных с ним буферах информации см. в идентификаторах объектов NDIS.
- Целевая платформа: универсальная
- Версия: не поддерживается для драйверов NDIS 6.0 в Windows Vista. Вместо этого используйте NdisOidRequest. Поддерживается для драйверов NDIS 5.1 в Windows Vista и Windows XP.
Требования
Требование | Ценность |
---|---|
заголовка | ndis.h (include Ndis.h) |
библиотеки | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |