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


функция MINIPORT_SYNCHRONOUS_OID_REQUEST (ndis.h)

NDIS вызывает функцию обратного вызова минипорта MiniportSynchronousOidRequest функцию обратного вызова для выдачи синхронного запроса OID.

Синтаксис

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

Параметры

[in] MiniportAdapterContext

Дескриптор контекстной области, выделенной драйвером мини-порта в функции miniportInitializeEx. Драйвер минипорта использует эту область контекста для поддержания сведений о состоянии для мини-адаптера.

[in] OidRequest

Указатель на структуру NDIS_OID_REQUEST, содержащую буфер и пакет запроса для обработчика минипорта. В зависимости от запроса драйвер возвращает запрошенную информацию в предоставленной структуре.

Возвращаемое значение

MiniportSynchronousOidRequest может возвращать одно из следующих значений состояния:

Возвращаемый код Описание
NDIS_STATUS_SUCCESS
Набор минипорта или получение данных по запросу.
NDIS_STATUS_INVALID_OID
Запрос, OidRequest, был недопустим или не распознаен.
NDIS_STATUS_NOT_SUPPORTED
Запрос, указанный OidRequest, но драйвер минипорта не поддерживает его.
NDIS_STATUS_BUFFER_TOO_SHORT
Буфер, который поставок OidRequest, был слишком мал для хранения запрошенных данных.
NDIS_STATUS_INVALID_LENGTH
Значение, указанное в элементе InformationBufferLength структуры NDIS_OID_REQUEST в OidRequest, неверно соответствует указанному коду OID_Xxx.
NDIS_STATUS_INVALID_DATA
Один или несколько параметров, указанных для запроса по OidRequest, были недопустимыми.
NDIS_STATUS_INDICATION_REQUIRED
Минипорт-драйвер предоставит состояние завершения OID с последующим указанием состояния. Минипорт-драйвер не может возвращать NDIS_STATUS_INDICATION_REQUIRED, если он не разрешает определенный OID. Чтобы определить, разрешено ли это состояние, см. страницу справочника по OID. Дополнительные сведения о NDIS_STATUS_INDICATION_REQUIRED см. в NDIS_OID_REQUEST и NDIS_STATUS_INDICATION.
NDIS_STATUS_NOT_ACCEPTED
После вызова функция MiniportDevicePnPEventNotify для обозначения неожиданного удаления, NDIS называется функцией MiniportHaltEx драйвера. Если драйвер получил запросы OID до вызова NDIS MiniportHaltEx, он должен немедленно завершить такие запросы со значением состояния NDIS_STATUS_NOT_ACCEPTED.

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

Замечания

MiniportSynchronousOidRequest является необязательной функцией. Драйвер минипорта регистрирует эту функцию, если она обрабатывает синхронные запросы OID. Драйвер указывает точку входа MiniportSynchronousOidRequest при вызове функции NdisMRegisterMiniportDriver с помощью SynchronousOidRequestHandler члена структуры NDIS_MINIPORT_DRIVER_CHARACTERISTICS.

Драйверы минипорта не должны возвращать NDIS_STATUS_PENDING или NDIS_STATUS_REQUEST_ABORTED из MiniportSynchronousOidRequest. Синхронные запросы OID не могут быть записанны или отменены.

Драйверы минипорта могут вернуться NDIS_STATUS_NOT_ACCEPTED после вызова NDIS MiniportDevicePnPEventNotify, чтобы уведомить водителя о неожиданном удалении устройства. Однако минипорт-драйверы по-прежнему могут завершить запрос OID с другим кодом состояния, если это возможно. Дополнительные сведения см. в конкретной документации по каждому OID.

Ожидается, что мини-порты будут выполнять синхронные запросы OID быстро, не блокируя, ожидая или спящая. Синхронные запросы OID используются только для операций с низкой задержкой, и драйверы минипорта должны стремиться выполнить их в течение нескольких миллисекунд. Большинство запросов OID доставляются в MiniportOidRequest, что разрешено поставить или дождаться более длительной длительности.

NDIS не сериализует синхронные запросы OID друг к другу, против других запросов OID, против MiniportPause, против MiniportResetExили от переходов питания. Это ответственность драйвера минипорта для реализации собственной синхронизации и сбоя запросов, которые доставляются в то время, когда запрос не может быть успешно обработан.

NDIS сериализует синхронные запросы OID на MiniportHaltEx; NDIS гарантирует, что не будут активны синхронные запросы OID после вызова MiniportHaltEx.

Минипорт-драйверы, реализующие выборочную приостановку NDIS, несовместимы с синхронными идентификаторами OID и не должны регистрировать обработчик MiniportSynchronousOidRequest.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1709
целевая платформа Виндоус
заголовка ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

синхронный интерфейс запроса OID в NDIS 6.80