Создание запросов 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 передает окончательное состояние запроса в статусе параметра FilterOidRequestComplete.

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

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

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