Обработка запросов OID в минипорт-адаптере

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

NDIS передает MiniportOidRequest указатель на структуру NDIS_OID_REQUEST, содержащую сведения о запросе. Структура запроса содержит идентификатор OID_Xxx, указывающий тип запроса и других членов для определения данных запроса.

Элемент Timeout указывает время ожидания (в секундах) для запроса. NDIS может сбросить драйвер или отменить запрос, если истекает время ожидания, прежде чем драйвер завершит запрос.

Элемент RequestId указывает необязательный идентификатор для запроса. Драйверы минипорта могут задать requestId элемента состояния, указывающего на значение, полученное от requestId члена связанного запроса OID. Как правило, минипорт-драйверы могут игнорировать этот элемент. Если драйвер должен задать этот элемент, эталонная страница для конкретного идентификатора OID предоставляет необходимые значения. Дополнительные сведения о признаках состояния см. в разделе Сведения о состоянии адаптера.

Минипорт-драйвер, который успешно обрабатывает запрос набора OID, должен задать элемент SupportedRevision в структуре NDIS_OID_REQUEST после возврата из запроса набора OID. Участник SupportedRevision уведомляет инициатора запроса о поддерживаемой драйвером редакции. Например, минипорт-драйвер может создать структуру Xxx_REVISION_2, указать значения, подходящие для структуры Xxx_REVISION_1, и заполнить остальную часть структуры нулями. Минипорт-драйвер будет указывать Xxx_REVISION_1 в элементе SupportedRevision. В этом случае драйвер протокола, поддерживающий Xxx_REVISION_2, будет использовать сведения Xxx_REVISION_1, которые поддерживает минипорт-драйвер. Для получения дополнительной информации о сведениях о версиях в структурах NDIS см. раздел Указание информации о версии NDIS.

Минипорт-драйвер может выполнять запрос OID синхронно, возвращая состояние успешного выполнения или сбоя.

Минипорт-драйвер может выполнять запрос OID асинхронно, возвращая NDIS_STATUS_PENDING. В этом случае драйвер минипорта должен вызвать функцию NdisMOidRequestComplete, чтобы завершить операцию.

Если MiniportOidRequest возвращает NDIS_STATUS_PENDING, NDIS не вызовет MiniportOidRequest с другим запросом адаптера до выполнения текущего запроса.

NDIS может вызывать функцию драйвера минипорта MiniportCancelOidRequest для отмены запроса OID.