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


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

Драйвер фильтра может создавать запросы OID или задавать запросы базовым драйверам путем вызова функции NdisFOidRequest .

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

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

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

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

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

Если NdisFOidRequest возвращает NDIS_STATUS_PENDING, NDIS вызывает функцию FilterOidRequestComplete после завершения запроса OID базовыми драйверами. В этом случае NDIS передает результаты запроса по параметру OidRequestобъекта FilterOidRequestComplete. NDIS передает окончательное состояние запроса в параметре Statusобъекта FilterOidRequestComplete.

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

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

Примечание Драйвер фильтра должен отслеживать исходящие запросы OID и убедиться, что он не вызывает функцию NdisFOidRequestComplete по завершении таких запросов.