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


Обработка запросов 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.