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


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

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

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

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

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

Для синхронного выполнения NdisOidRequest возвращает NDIS_STATUS_SUCCESS или состояние ошибки. Для асинхронного выполнения NdisOidRequest возвращает NDIS_STATUS_PENDING.

Если NdisOidRequest возвращает NDIS_STATUS_PENDING, NDIS вызывает функцию ProtocolOidRequestComplete после того, как базовые драйверы завершают запрос OID. В этом случае NDIS передает результаты запроса в параметре OidRequestобъекта ProtocolOidRequestComplete. NDIS передает окончательное состояние запроса в параметре Statusобъекта 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 , когда привязка находится в состоянии Перезапуск, Выполняется, Приостановка или Приостановлено .