Функция 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 может возвращать одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Драйвер мини-порта установил или получил данные в соответствии с запросом. |
|
Запрос, указанный OidRequest , является недопустимым или не распознанный. |
|
Запрос, указанный в OidRequest , распознается, но драйвер мини-порта не поддерживает его. |
|
Буфер, который предоставляет OidRequest , был слишком мал для хранения запрошенных данных. |
|
Значение, указанное в элементе InformationBufferLength структуры NDIS_OID_REQUEST в OidRequest , неверно для указанного кода OID_Xxx . |
|
Один или несколько параметров, указанных для запроса в OidRequest , были недопустимыми. |
|
Драйвер мини-порта предоставит состояние завершения OID с последующим указанием состояния. Драйвер мини-порта не может вернуть NDIS_STATUS_INDICATION_REQUIRED, если это не разрешено определенным идентификатором OID. Чтобы определить, разрешено ли это состояние, см. страницу справочника по OID. Дополнительные сведения о NDIS_STATUS_INDICATION_REQUIRED см. в разделе NDIS_OID_REQUEST и NDIS_STATUS_INDICATION. |
|
После вызова Функция 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 |