Compartir a través de


MINIPORT_CO_OID_REQUEST función de devolución de llamada (ndis.h)

La función MiniportCoOidRequest controla una solicitud de OID para consultar o establecer información en el controlador de miniporte de CoNDIS.

Nota Debe declarar la función mediante el tipo MINIPORT_CO_OID_REQUEST . Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

MINIPORT_CO_OID_REQUEST MiniportCoOidRequest;

NDIS_STATUS MiniportCoOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HANDLE MiniportVcContext,
       PNDIS_OID_REQUEST NdisRequest
)
{...}

Parámetros

[in] MiniportAdapterContext

Identificador de un área de contexto que el controlador de minipuerto asignó en su función MiniportInitializeEx . El controlador de minipuerto usa este área de contexto para mantener la información de estado de un adaptador de minipuerto.

[in] MiniportVcContext

Identificador de un área de contexto asignada por el controlador de miniporte en la que el controlador de miniporte mantiene su estado de conexión por virtual (VC). El controlador de minipuerto proporcionó este identificador a NDIS desde su función MiniportCoCreateVc . Si la solicitud no es específica de VC, este parámetro es NULL.

NdisRequest

Puntero a una estructura de NDIS_OID_REQUEST que contiene el búfer y el paquete de solicitud para que el controlador de miniporte lo controle. Según la solicitud, el controlador devuelve la información solicitada en la estructura a la que apunta este parámetro.

Valor devuelto

MiniportCoOidRequest puede devolver uno de los siguientes valores de estado:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
El controlador de miniporte establece o obtiene los datos según se solicite.
NDIS_STATUS_PENDING
El controlador de minipuerto completará la solicitud de forma asincrónica. Después de que el controlador de miniporte haya completado todo el procesamiento, debe llamar al Función NdisMCoOidRequestComplete para informar a NDIS de que la solicitud se ha completado.
NDIS_STATUS_INVALID_OID
Solicitud de que el parámetro OidRequest especificado no era válido o no reconocido.
NDIS_STATUS_NOT_SUPPORTED
La solicitud de que el parámetro OidRequest especificado fue reconocido pero no compatible con el controlador de miniport.
NDIS_STATUS_BUFFER_TOO_SHORT
El búfer que proporcionó el parámetro OidRequest era demasiado pequeño para contener los datos solicitados.
NDIS_STATUS_INVALID_LENGTH
El valor especificado en el miembro InformationBufferLength de la estructura de NDIS_OID_REQUEST en OidRequest es incorrecto para el código OID_XXX especificado.
NDIS_STATUS_INVALID_DATA
Uno o varios de los parámetros especificados para la solicitud en OidRequest iwas no son válidos.
NDIS_STATUS_NOT_ACCEPTED
Después de que NDIS llame a Función MiniportDevicePnPEventNotify para indicar una eliminación sorpresa, NDIS llama a la función MiniportHaltEx del controlador. Si el controlador recibe solicitudes de OID antes de que NDIS llame a MiniportHaltEx, debe completar inmediatamente dichas solicitudes con un valor de estado de NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
El controlador de minipuerto detuvo el procesamiento de la solicitud. Por ejemplo, NDIS llamado MiniportResetEx o Función MiniportCancelOidRequest .

Comentarios

NDIS llama a la función MiniportCoOidRequest para controlar una solicitud de OID para consultar o establecer información en un controlador de miniporte de CoNDIS.

Para registrar MiniportCoOidRequest, los controladores de minipuerto llaman a la función NdisSetOptionalHandlers desde la función MiniportSetOptions . En MiniportSetOptions, el controlador de minipuerto inicializa un NDIS_MINIPORT_CO_CHARACTERISTICS estructura y la pasa en el parámetro OptionalHandlers de NdisSetOptionalHandlers.

NDIS llama a la función MiniportCoOidRequest en su propio nombre o en nombre de un controlador de protocolo enlazado que llamó a la función NdisCoOidRequest . Los controladores de miniport deben examinar la solicitud proporcionada en OidRequest y realizar la acción solicitada. Para obtener más información sobre los OID que controlan los controladores de minipuerto, consulte NDIS OIDs.

Tenga en cuenta que NDIS no valida el contenido específico del OID en OidRequest . Por lo tanto, el propio controlador debe validar este contenido. Si el controlador determina que el valor que se va a establecer está fuera de los límites, debe producir un error en la solicitud y devolver NDIS_STATUS_INVALID_DATA.

Si MiniportCoOidRequest devuelve NDIS_STATUS_PENDING, NDIS puede llamar a MiniportCoOidRequest con otra solicitud, para el adaptador de miniport especificado en MiniportAdapterContext, antes de que se complete la solicitud pendiente. NDIS no serializa las solicitudes de OID orientadas a la conexión.

Ejemplos

Para definir una función MiniportCoOidRequest , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una función MiniportCoOidRequest denominada "MyCoOidRequest", use el tipo de MINIPORT_CO_OID_REQUEST como se muestra en este ejemplo de código:

MINIPORT_CO_OID_REQUEST MyCoOidRequest;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
NDIS_STATUS
 MyCoOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HANDLE  MiniportVcContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

El tipo de función MINIPORT_CO_OID_REQUEST se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_CO_OID_REQUEST en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.0 y versiones posteriores.
Plataforma de destino Windows
Encabezado ndis.h (incluya Ndis.h)
IRQL <= DISPATCH_LEVEL

Consulte también

MiniportCancelOidRequest

MiniportCoCreateVc

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportResetEx

MiniportSetOptions

NDIS_MINIPORT_CO_CHARACTERISTICS

NDIS_OID_REQUEST

NdisCoOidRequest

NdisMCoOidRequestComplete

NdisSetOptionalHandlers