Поделиться через


Функция 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

См. также раздел