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


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

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

Чтобы создать запрос 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 передает окончательное состояние запроса в параметре Statusобъекта ProtocolCoOidRequestComplete.

Если 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 , когда привязка находится в состоянии Перезапуск, Выполняется, Приостановка или Приостановлено .