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 |
---|---|
|
El controlador de minipuerto estableció o obtuvo los datos solicitados. |
|
La solicitud que OidRequest especificó no era válida o no se reconoció. |
|
Solicitud de que se reconoció OidRequest , pero el controlador de miniport no lo admite. |
|
El búfer que suministra OidRequest era demasiado pequeño para contener los datos solicitados. |
|
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. |
|
Uno o varios de los parámetros especificados para la solicitud en OidRequest no eran válidos. |
|
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. |
|
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 |