Compartir a través de


función MINIPORT_SYNCHRONOUS_OID_REQUEST (ndis.h)

NDIS llama a la función de devolución de llamada MiniportSynchronousOidRequest de un controlador de miniporte para emitir una solicitud de OID sincrónica.

Sintaxis

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_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

MiniportSynchronousOidRequest 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_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_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 del OID. Para obtener más información sobre NDIS_STATUS_INDICATION_REQUIRED, consulte NDIS_OID_REQUEST y NDIS_STATUS_INDICATION.
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.

Los controladores de miniport no siempre son necesarios para devolver NDIS_STATUS_NOT_ACCEPTED para todos los OID después de una eliminación sorpresa, pero hacerlo ayuda a explicar por qué se produjo un error en la llamada.

Observaciones

miniportSynchronousOidRequest es una función opcional. Un controlador de miniporta registra esta función si controla las solicitudes de OID sincrónicas. El controlador especifica el punto de entrada MiniportSynchronousOidRe quest cuando llama a la función NdisMRegisterMiniportDriver, mediante el SynchronousOidRequestHandler miembro de la estructura NDIS_MINIPORT_DRIVER_CHARACTERISTICS.

Los controladores de miniport no deben devolver NDIS_STATUS_PENDING ni NDIS_STATUS_REQUEST_ABORTED desde MiniportSynchronousOidRequest. Las solicitudes de OID sincrónicas no se pueden escribir ni cancelar.

Los controladores de miniport pueden devolver NDIS_STATUS_NOT_ACCEPTED después de las llamadas NDIS MiniportDevicePnPEventNotify para notificar al controlador la eliminación sorpresa del dispositivo. Sin embargo, es posible que los controladores de miniporte sigan completando la solicitud OID con un código de estado diferente, si es posible hacerlo. Para obtener más información, consulta la documentación específica de cada OID.

Se espera que los controladores de miniporte completen las solicitudes OID sincrónicas rápidamente sin bloquear, esperar o dormir. Las solicitudes OID sincrónicas solo se usan para las operaciones de baja latencia y los controladores de miniport deben esforzarse por completarlas en varios milisegundos. La mayoría de las solicitudes de OID se entregan a MiniportOidRequest, que se permite en pend o esperar durante más tiempo.

NDIS no serializa solicitudes de OID sincrónicas entre sí, contra otras solicitudes OID, contra MiniportPause, contra MiniportResetEx, o contra transiciones de energía. Es responsabilidad del controlador de miniportar implementar su propia sincronización y producir errores en las solicitudes que se entregan en un momento en que la solicitud no se puede controlar correctamente.

NDIS serializa solicitudes OID sincrónicas contra MiniportHaltEx; NDIS garantiza que no se active ninguna solicitud de OID sincrónica una vez se invoca MiniportHaltEx.

Los controladores de miniporte que implementan suspensión selectiva de NDIS no son compatibles con los identificadores de identificación sincrónicos y no deben registrar un controlador de MiniportSynchronousOidRequest.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10, versión 1709
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL

Consulte también

miniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

miniportpause

miniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

interfaz de solicitud OID sincrónica en NDIS 6.80