функция обратного вызова MINIPORT_OID_REQUEST (ndis.h)
NDIS вызывает функцию MiniportOidRequest драйвера минипорта для обработки запроса OID для запроса или задания сведений в драйвере.
Синтаксис
MINIPORT_OID_REQUEST MiniportOidRequest;
NDIS_STATUS MiniportOidRequest(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PNDIS_OID_REQUEST OidRequest
)
{...}
Параметры
[in] MiniportAdapterContext
Дескриптор контекстной области, выделенной драйвером мини-порта в функции MiniportInitializeEx . Драйвер мини-порта использует эту контекстную область для хранения сведений о состоянии адаптера мини-порта.
[in] OidRequest
Указатель на структуру NDIS_OID_REQUEST , которая содержит буфер и пакет запроса для обработки драйвера мини-порта. В зависимости от запроса драйвер возвращает запрошенные сведения в предоставленной структуре.
Возвращаемое значение
MiniportOidRequest может возвращать одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Драйвер мини-порта задал или получил данные в соответствии с запросом. |
|
Драйвер мини-порта выполнит запрос асинхронно. После того как драйвер мини-порта завершит всю обработку, он должен вызвать Функция NdisMOidRequestComplete для информирования NDIS о том, что запрос завершен. |
|
Запрос, указанный в OidRequest, является недопустимым или не распознается. |
|
Запрос, указанный в OidRequest, распознается, но не поддерживается драйвером мини-порта. |
|
Буфер, предоставленный в OidRequest, слишком мал для хранения запрошенных данных. |
|
Значение, указанное в элементе InformationBufferLength структуры NDIS_OID_REQUEST в OidRequest , неверно для указанного кода OID_ XXX . |
|
Один или несколько параметров, указанных для запроса в OidRequest , недопустимы. |
|
После вызова Функция MiniportDevicePnPEventNotify, указывая на неожиданное удаление, NDIS вызывает функцию MiniportHaltEx драйвера. Если драйвер получает какие-либо запросы OID до вызова NDIS MiniportHaltEx, он должен немедленно завершить такие запросы со значением состояния NDIS_STATUS_NOT_ACCEPTED. |
|
Драйвер мини-порта остановил обработку запроса. Например, NDIS вызывает функцию MiniportResetEx . |
|
Драйвер мини-порта предоставит состояние завершения OID с последующим указанием состояния. Драйвер мини-порта не может вернуть NDIS_STATUS_INDICATION_REQUIRED, если это не разрешено определенным идентификатором OID. Чтобы определить, разрешено ли это состояние, см. страницу справочника по OID.. Дополнительные сведения о NDIS_STATUS_INDICATION_REQUIRED см. в разделе NDIS_OID_REQUEST и NDIS_STATUS_INDICATION. |
Комментарии
Драйвер указывает точку входа MiniportOidRequest при вызовеФункция NdisMRegisterMiniportDriver.
NDIS вызывает функцию MiniportOidRequest либо от своего имени, либо от имени драйвера связанного протокола, который вызвал функцию NdisOidRequest . Водители минипорта должны изучить запрос, предоставленный в OidRequest , и выполнить запрошенное действие. Дополнительные сведения о идентификаторах OID, которые обрабатываются драйверами минипорта, см. в разделе OIDS NDIS.
Обратите внимание, что NDIS не проверяет содержимое OID в OidRequest . Поэтому сам драйвер должен проверить это содержимое. Если драйвер определяет, что заданное значение выходит за пределы границ, он должен завершить запрос и вернуть NDIS_STATUS_INVALID_DATA.
Если MiniportOidRequest возвращает NDIS_STATUS_PENDING, NDIS не будет вызывать MiniportOidRequest с другим запросом для адаптера минипорта, указанного в MiniportAdapterContext, до завершения ожидающего запроса.
Примеры
Чтобы определить функцию MiniportOidRequest , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию MiniportOidRequest с именем MyOidRequest, используйте тип MINIPORT_OID_REQUEST , как показано в следующем примере кода:
MINIPORT_OID_REQUEST MyOidRequest;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
NDIS_STATUS
MyOidRequest(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_OID_REQUEST OidRequest
)
{...}
Тип функции MINIPORT_OID_REQUEST определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции MINIPORT_OID_REQUEST в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье О поведении функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | NdisOidComplete, NdisOidDoubleComplete, NdisOidDoubleRequest, NdisTimedOidComplete, WlanAssociation, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan |