Compartir a través de


MINIPORT_SYNCHRONOUS_OID_REQUEST función (ndis.h)

NDIS llama a la función de devolución de llamada MiniportSynchronousOidRequest del controlador de miniport 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 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] 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 lo 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 minipuerto estableció o obtuvo los datos solicitados.
NDIS_STATUS_INVALID_OID
La solicitud que OidRequest especificó no era válida o no se reconoció.
NDIS_STATUS_NOT_SUPPORTED
Solicitud de que se reconoció OidRequest , pero el controlador de miniport no lo admite.
NDIS_STATUS_BUFFER_TOO_SHORT
El búfer que suministra 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 no eran válidos.
NDIS_STATUS_INDICATION_REQUIRED
El controlador de minipuerto proporcionará un estado de finalización de OID con una indicación de estado posterior. Un controlador de minipuerto 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.
NDIS_STATUS_NOT_ACCEPTED
Después de llamar a Función MiniportDevicePnPEventNotify para indicar una eliminación sorpresa, NDIS llamada función MiniportHaltEx del controlador. Si el controlador recibió 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.

Los controladores de minipuerto 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.

Comentarios

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

Los controladores 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 miniport pueden devolver NDIS_STATUS_NOT_ACCEPTED después de que NDIS llame a MiniportDevicePnPEventNotify para notificar al controlador la eliminación sorpresa del dispositivo. Sin embargo, los controladores de minipuerto todavía pueden completar la solicitud de 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 de OID sincrónicas rápidamente sin necesidad de bloquear, esperar o dormir. Las solicitudes de OID sincrónicas solo se usan para las operaciones de baja latencia y los controladores de miniporte deben esforzarse por completarlas en varios milisegundos. La mayoría de las solicitudes de OID se entregan a MiniportOidRequest, que se permite que se lápize o espere durante más tiempo.

NDIS no serializa solicitudes de OID sincrónicas entre sí, contra otras solicitudes de 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 a la vez cuando la solicitud no se puede controlar correctamente.

NDIS serializa solicitudes de OID sincrónicas contra MiniportHaltEx; NDIS garantiza que ninguna solicitud de OID sincrónica estará activa una vez que se invoque MiniportHaltEx .

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1709
Plataforma de destino Windows
Encabezado 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