Compartir a través de


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

NDIS llama a la función miniportDirectOidRe quest de un controlador de miniporte para controlar una solicitud de OID directa para consultar o establecer información en el controlador.

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

Sintaxis

MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;

NDIS_STATUS MiniportDirectOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

Parámetros

[in] MiniportAdapterContext

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

[in] OidRequest

Puntero a una estructura de NDIS_OID_REQUEST que contiene el búfer y el paquete de solicitud para que el controlador de miniporte controle. Dependiendo de la solicitud, el controlador devuelve la información solicitada en la estructura proporcionada.

Valor devuelto

miniportDirectOidRequest 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 NdisMDirectOidRequestComplete para informar a NDIS de que la solicitud se ha completado.
NDIS_STATUS_INVALID_OID
La solicitud que OidRequest especificada no era válida o no se reconoció.
NDIS_STATUS_NOT_SUPPORTED
Se reconoció la solicitud que OidRequest, pero el controlador de miniport no lo admite.
NDIS_STATUS_BUFFER_TOO_SHORT
El búfer que OidRequest proporciona era demasiado pequeño para contener los datos solicitados.
NDIS_STATUS_INVALID_LENGTH
El valor especificado en el informationBufferLength miembro de la estructura de NDIS_OID_REQUEST en OidRequest es incorrecto para el códigoXxx OID_ especificado.
NDIS_STATUS_INVALID_DATA
Uno o varios de los parámetros especificados para la solicitud en OidRequest no eran válidos.
NDIS_STATUS_NOT_ACCEPTED
Después de llamar a función MiniportDevicePnPEventNotify para indicar una eliminación sorpresa, NDIS llamó a la función MiniportHaltEx del controlador. Si el controlador recibió solicitudes de OID antes de llamar a NDIS MiniportHaltEx, debe completar inmediatamente estas solicitudes con un valor de estado de NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
El controlador de miniporte detuvo el procesamiento de la solicitud. Por ejemplo, NDIS llamó a la función MiniportResetEx.
NDIS_STATUS_INDICATION_REQUIRED
El controlador de miniporte proporcionará un estado de finalización de OID con una indicación de estado posterior. Un controlador de miniport no puede devolver NDIS_STATUS_INDICATION_REQUIRED a menos que el OID concreto lo permita. Para determinar si se permite este estado, consulte la página de referencia de OID. Para obtener más información sobre NDIS_STATUS_INDICATION_REQUIRED, consulte NDIS_OID_REQUEST y NDIS_STATUS_INDICATION.

Observaciones

miniportDirectOidRequest es una función opcional. Un controlador de miniporta registra esta función si controla las solicitudes de OID directas. Un controlador especifica el miniportDirectOidRequest punto de entrada cuando llama a . función NdisMRegisterMiniportDriver. Un controlador de miniporte que registra el función miniportCancelDirectOidRequest también debe registrar miniportDirectOidRequest.

NDIS llama a la función MiniportDirectOidRequest en su propio nombre o en nombre de un controlador de protocolo enlazado que llamó a la función de NdisDirectOidRequest. Los controladores de miniport deben examinar la solicitud proporcionada en el parámetro OidRequest y realizar la acción solicitada.

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.

NDIS no serializa las solicitudes que envía a miniportDirectOidRequest con otras solicitudes OID. El controlador de miniport debe ser capaz de controlar varias llamadas a miniportDirectOidRequest cuando otras solicitudes que se envían a MiniportOidRequest o miniportDirectOidRequest están pendientes.

Nota La lógica de comprobación de bloqueo de NDIS no restablecerá un controlador de miniporte que no responda si el controlador de miniporte está esperando en el contexto de la llamada de MiniportOidRequest. Por lo tanto, los controladores de miniport no deben esperar a que se completen las operaciones de hardware desde el contexto de la llamada miniportOidRequest de. En su lugar, el controlador puede devolver NDIS_STATUS_PENDING y poner en cola un elemento de trabajo.
 
NDIS llama a miniportDirectOidRequest en IRQL <= DISPATCH_LEVEL.

Ejemplos de

Para definir una función MiniportDirectOidRequest, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir un miniportDirectOidRequest función denominada "MyDirectOidRequest", use el tipo MINIPORT_DIRECT_OID_REQUEST tal como se muestra en este ejemplo de código:

MINIPORT_DIRECT_OID_REQUEST MyDirectOidRequest;

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

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

El tipo de función MINIPORT_DIRECT_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_DIRECT_OID_REQUEST en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

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

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.1 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL

Consulte también

MiniportCancelDirectOidRequest MiniportDevicePnPEventNotify

MiniportDirectOidRequest

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

miniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisDirectOidRequest

NdisMDirectOidRequestComplete

NdisMRegisterMiniportDriver