Функция NdisMCmOidRequest (ndis.h)

Функция NdisMCmOidRequest отправляет запрос OID от драйвера диспетчера вызовов мини-порта (MCM) клиенту CoNDIS.

Синтаксис

NDIS_STATUS NdisMCmOidRequest(
  [in]           NDIS_HANDLE       NdisAfHandle,
  [in, optional] NDIS_HANDLE       NdisVcHandle,
  [in, optional] NDIS_HANDLE       NdisPartyHandle,
                 PNDIS_OID_REQUEST NdisOidRequest
);

Параметры

[in] NdisAfHandle

Дескриптор, идентифицирующий семейство адресов (AF) и неявно клиент, на который направляется запрос OID. Драйвер MCM изначально получил этот дескриптор в качестве входного параметра для функции ProtocolCmOpenAf .

[in, optional] NdisVcHandle

Дескриптор, идентифицирующий виртуальное подключение (VC), которое запрашивает вызывающий объект, или задает сведения, если запрос зависит от VC. В противном случае, если этот запрос не зависит от VC, этот параметр имеет значение NULL. Для любого конкретного запроса VC вызывающий объект изначально получил этот дескриптор либо при создании VC с функцией NdisMCmCreateVc , либо в качестве входного параметра для его функции ProtocolCoCreateVc .

[in, optional] NdisPartyHandle

Дескриптор, идентифицирующий сторону в многоточеном VC, который запрашивает вызывающий объект, или задает сведения, если запрос зависит от конкретной стороны. В противном случае, если этот запрос не зависит от стороннего запроса, этот параметр имеет значение NULL. Для любого запроса конкретной стороны драйвер MCM изначально получил этот дескриптор в качестве входного параметра для своей функции ProtocolCmAddParty .

NdisOidRequest

Указатель на буфер, выделенный вызывающим объектом, который содержит структуру NDIS_OID_REQUEST .

Возвращаемое значение

NdisMCmOidRequest возвращает одно из следующих значений:

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция запроса успешно завершена.
NDIS_STATUS_PENDING
Запрос обрабатывается асинхронно, и NDIS вызовет вызывающий объект. Функция ProtocolCoOidRequestComplete при выполнении запроса.
NDIS_STATUS_INVALID_OID
Код OID_XXX, указанный в элементе Oid структуры NDIS_OID_REQUEST в параметре OidRequest , недопустим или не поддерживается базовым драйвером.
NDIS_STATUS_INVALID_LENGTH или NDIS_STATUS_BUFFER_TOO_SHORT
Значение, указанное в элементе InformationBufferLength структуры NDIS_OID_REQUEST в OidRequest , не соответствует требованиям для заданного кода OID_XXX . Если информационный буфер слишком мал, член BytesNeeded NDIS_OID_REQUEST содержит правильное значение для InformationBufferLength, когда возвращается значение NdisMCmOidRequest .
NDIS_STATUS_INVALID_DATA
Данные, предоставленные в InformationBuffer в указанной NDIS_OID_REQUEST структуре, были недопустимыми для заданного кода OID_XXX .
NDIS_STATUS_NOT_SUPPORTED или NDIS_STATUS_NOT_RECOGNIZED
Драйвер клиента не поддерживает запрошенную операцию.
NDIS_STATUS_RESOURCES
Не удалось выполнить запрос из-за нехватки ресурсов. Обычно это возвращаемое значение указывает, что попытка выделить память была неудачной, но это не обязательно указывает на то, что тот же запрос, если он будет отправлен позже, завершится ошибкой по той же причине.
NDIS_STATUS_FAILURE
Это значение обычно является неспецифической по умолчанию, которое возвращается, если не применяется ни один из более конкретных кодов состояния NDIS_STATUS_XXX .
NDIS_STATUS_REQUEST_ABORTED
Целевой драйвер прекратил обработку запроса.

Комментарии

Чтобы инициировать запросы OID к клиентам CoNDIS, драйверы MCM вызывают функцию NdisMCmOidRequest . Прежде чем драйвер MCM вызовет NdisMCmOidRequest, драйвер выделяет память для своего запроса и инициализирует структуру NDIS_OID_REQUEST . MCM задает элемент Oid структуры NDIS_OID_REQUEST с помощью кода OID CoNDIS.

Драйвер MCM может вызывать NdisMCmOidRequest для передачи информации, ориентированной на подключение, например об изменении адресов клиенту, определяемой параметром NdisAfHandle .

После вызова MCM NdisMCmOidRequest NDIS вызывает функцию ProtocolCoOidRequest клиента.

Если запрос драйвера MCM зависит от VC или сторон, драйвер MCM также передает значение, отличное от NULL , в параметре NdisVcHandle или NdisPartyHandle соответственно.

Если NdisMCmOidRequest возвращает NDIS_STATUS_PENDING, запрос обрабатывается асинхронно и NDIS вызовет MCM Функция ProtocolCoOidRequestComplete при выполнении запроса. Если NdisMCmOidRequest возвращает любое другое состояние, запрос завершается, когда возвращается NdisMCmOidRequest , а NDIS не вызывает ProtocolCoOidRequestComplete.

Дополнительные сведения о идентификаторах OID, определенных для использования с NdisMCmOidRequest, см. в разделе OID NDIS.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_MCM_Function(ndis)

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

NDIS_OID_REQUEST

NdisMCmCreateVc

ProtocolCmAddParty

ProtocolCmOpenAf

ProtocolCoCreateVc

ProtocolCoOidRequest

ProtocolCoOidRequestComplete