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

NDIS вызывает функцию обратного вызова MiniportSynchronousOidRequest драйвера miniport для выдачи синхронного запроса 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
Целевая платформа Windows
Header ndis.h (включая 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