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 |
---|---|
|
El controlador de miniporte establece o obtiene los datos según se solicite. |
|
La solicitud que OidRequest especificada no era válida o no se reconoció. |
|
Se reconoció la solicitud que OidRequest, pero el controlador de miniport no lo admite. |
|
El búfer que OidRequest proporciona era demasiado pequeño para contener los datos solicitados. |
|
El valor especificado en el informationBufferLength miembro de la estructura de NDIS_OID_REQUEST en OidRequest es incorrecto para el códigoXxx OID_ especificado. |
|
Uno o varios de los parámetros especificados para la solicitud en OidRequest no eran válidos. |
|
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. |
|
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 |