Создание запросов OID из драйвера протокола NDIS
Чтобы создать запрос OID к базовым драйверам, протокол вызывает функцию NdisOidRequest.
На следующем рисунке показан запрос 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, когда связь находится в состоянии перезапуска, выполнения, приостановкиили паузы.