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