функция 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 может возвращать одно из следующих значений состояния:
Возвращаемый код | Описание |
---|---|
|
Набор минипорта или получение данных по запросу. |
|
Запрос, 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 |
целевая платформа | Виндоус |
заголовка | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |