Функция 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
Запрос обрабатывается асинхронно, и функция ProtocolRequestComplete вызываемого абонента будет вызываться после его завершения.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 для запроса или набора.
Возвращаемое значение
None
Remarks
Драйвер протокола должен выделить достаточный объем памяти для буфера информации, связанного с 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 (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |