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


Запросы драйвера протокола CoNDIS OID

Драйверы протокола CoNDIS, клиенты или диспетчеры вызовов, могут запрашивать или задавать операционные параметры драйверов мини-порта и других драйверов протокола. Драйверы протокола CoNDIS также могут запрашивать или задавать сведения в диспетчерах вызовов мини-порта (MCM). Дополнительные сведения о запросах OID и MCM см. в запросы CoNDIS MCM OID.

Чтобы создать запрос OID к базовому драйверу, драйвер протокола вызывает функцию NdisCoOidRequest и задает дескриптор семейства адресов (AF) в параметре NdisAfHandle на значение NULL. Чтобы инициировать запрос OID к другому драйверу протокола CoNDIS, драйвер протокола вызывает NdisCoOidRequest и предоставляет верный дескриптор AF.

Когда драйвер протокола вызывает функцию NdisCoOidRequest, NDIS вызывает функцию запроса OID другого драйвера (базовый драйвер или другой драйвер протокола CoNDIS). Для драйверов минипорта NDIS вызывает функцию MiniportCoOidRequest. Для драйверов протокола NDIS вызывает функцию ProtocolCoOidRequest.

На следующем рисунке показан запрос OID, направленный на минипорт-драйвер.

диаграмма, иллюстрирующая запрос OID, направленный на минипорт-драйвер.

На следующем рисунке показан запрос OID, направленный на драйвер протокола.

схема, иллюстрирующая запрос OID, направленный на драйвер протокола.

Чтобы синхронно завершить, NdisCoOidRequest возвращает NDIS_STATUS_SUCCESS или код ошибки. Чтобы завершить выполнение асинхронно, NdisCoOidRequest возвращает NDIS_STATUS_PENDING.

Если NdisCoOidRequest возвращает NDIS_STATUS_PENDING, NDIS вызывает функцию ProtocolCoOidRequestComplete после того, как другой драйвер завершает запрос OID с помощью функции NdisMCoOidRequestComplete или функции NdisCoOidRequestComplete. В этом случае NDIS передает результаты запроса в параметре OidRequest параметра ProtocolCoOidRequestComplete. NDIS передает окончательное состояние запроса в параметре StatusProtocolCoOidRequestComplete.

Если NdisCoOidRequest возвращает NDIS_STATUS_SUCCESS, он возвращает результаты запроса в структуре NDIS_OID_REQUEST на точках параметров OidRequest. В этом случае NDIS не вызывает функцию ProtocolCoOidRequestComplete.

Если базовый драйвер должен связать запрос OID с последующим указанием состояния, драйвер протокола должен задать RequestId и RequestHandle членов в структуре NDIS_OID_REQUEST. Если базовый драйвер делает указание состояния, драйвер устанавливает член RequestId в структуре NDIS_STATUS_INDICATION в значение из члена RequestId структуры NDIS_OID_REQUEST и член DestinationHandle в структуре NDIS_STATUS_INDICATION в значение из члена RequestHandle структуры NDIS_OID_REQUEST.

Драйвер может вызывать NdisCoOidRequest, когда привязка находится в состоянии перезапуска, выполнения, приостановкиили в состоянии приостановки.