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


Создание запросов OID из драйвера протокола NDIS

Чтобы создать запрос OID к базовым драйверам, протокол вызывает функцию NdisOidRequest.

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

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

Когда драйвер протокола вызывает функцию NdisOidRequest, NDIS вызывает функцию запроса следующего базового драйвера. Дополнительные сведения о том, как минипорт-драйвер обрабатывает запросы OID, см. в запросах OID для данного адаптера. Дополнительные сведения о том, как драйвер фильтра обрабатывает запросы OID, см. в запросов модуля фильтрации.

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

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

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

Чтобы определить, какие сведения были успешно обработаны базовым драйвером, драйверы протоколов, которые выдают запросы OID, должны проверить значение в элементе SupportedRevision в структуре NDIS_OID_REQUEST после возврата запроса OID. Дополнительные сведения о версии NDIS см. в разделе Описание сведений о версии NDIS.

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

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