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