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