Запросы OID CoNDIS MCM
Как и другие диспетчеры звонков CoNDIS, диспетчеры вызовов минипорта (MCM) могут запрашивать или задавать рабочие параметры драйверов клиента CoNDIS. Клиентские драйверы CoNDIS могут запрашивать или задавать параметры диспетчера вызовов или параметров драйвера минипорта MCM.
Чтобы создать запрос OID к драйверу клиента CoNDIS, MCM вызывает функцию NdisMCmOidRequest .
На следующем рисунке показан запрос OID, который был создан MCM.
После того как драйвер MCM вызывает функцию NdisMCmOidRequest , NDIS вызывает функцию ProtocolCoOidRequest драйвера клиента.
Для синхронного выполнения NdisMCmOidRequest возвращает NDIS_STATUS_SUCCESS или состояние ошибки. Для асинхронного выполнения NdisMCmOidRequest возвращает NDIS_STATUS_PENDING.
Если NdisMCmOidRequest возвращает NDIS_STATUS_PENDING, NDIS вызывает функцию ProtocolCoOidRequestComplete MCM после того, как клиентские драйверы завершают запрос OID путем вызова функции NdisCoOidRequestComplete . В этом случае NDIS передает результаты запроса в параметре OidRequestобъекта ProtocolCoOidRequestComplete. NDIS передает окончательное состояние запроса в параметре Statusобъекта ProtocolCoOidRequestComplete.
Если NdisMCmOidRequest возвращает NDIS_STATUS_SUCCESS, он возвращает результаты запроса в структуре NDIS_OID_REQUEST в параметре OidRequest . В этом случае NDIS не вызывает функцию ProtocolCoOidRequestComplete MCM.
Клиентские драйверы CoNDIS могут запрашивать или задавать операционные параметры диспетчера вызовов или рабочие параметры минипорта MCM. Чтобы создать запрос OID для параметров диспетчера вызовов MCM, клиент вызывает функцию NdisCoOidRequest и предоставляет допустимый дескриптор семейства адресов (AF) в параметре NdisAfHandle . Чтобы создать запрос OID для параметров мини-порта MCM, клиент вызывает функцию NdisCoOidRequest и устанавливает для дескриптора AF значение NULL.
После того как клиент вызывает функцию NdisCoOidRequest , NDIS вызывает либо функцию MiniportCoOidRequest , либо функцию ProtocolCoOidRequest драйвера MCM.
На следующем рисунке показан запрос OID для параметров минипорта MCM.
На следующем рисунке показан запрос OID для параметров диспетчера вызовов MCM.
Для синхронного выполнения NdisCoOidRequest возвращает NDIS_STATUS_SUCCESS или состояние ошибки. Для асинхронного выполнения ProtocolCoOidRequest или MiniportCoOidRequest возвращает NDIS_STATUS_PENDING.
Если ProtocolCoOidRequest или MininportCoOidRequest возвращает NDIS_STATUS_PENDING, NDIS вызывает функцию ProtocolCoOidRequestComplete клиента после того, как MCM завершит запрос OID, вызвав функцию NdisMCoOidRequestComplete или NdisMCmOidRequestComplete . В этом случае NDIS передает результаты запроса в параметре OidRequestобъекта ProtocolCoOidRequestComplete. NDIS передает окончательное состояние запроса в параметре Statusобъекта ProtocolCoOidRequestComplete.
Если NdisCoOidRequest возвращает NDIS_STATUS_SUCCESS, он возвращает результаты запроса в структуре NDIS_OID_REQUEST в параметре OidRequest . В этом случае NDIS не вызывает функцию ProtocolCoOidRequestComplete клиента.