WUDF_INTERRUPT_ISR función de devolución de llamada (wudfinterrupt.h)
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción a UMDF.
Un controlador OnInterruptIsr función de devolución de llamada de eventos proporciona una interrupción de hardware.
Sintaxis
typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
Parámetros
[in] Interrupt
Puntero a la interfaz IWDFInterrupt.
[in] MessageID
Si el dispositivo usa interrupciones con señal de mensaje (MSIs), este parámetro es el número de mensaje que identifica el mensaje de interrupción de hardware del dispositivo. De lo contrario, este valor es 0.
[in] Reserved
Reservado para uso del sistema.
Valor devuelto
Ninguno
Observaciones
Devuelve TRUE si el controlador reconoce la propiedad de la interrupción y ha detenido y confirmado la interrupción en su dispositivo. De lo contrario, devuelve FALSE.
Para registrar un OnInterruptIsr función de devolución de llamada, el controlador debe colocar la dirección de la función de devolución de llamada en una estructura de WUDF_INTERRUPT_CONFIG antes de llamar a IWDFDevice3::CreateInterrupt.
El OnInterruptIsr función de devolución de llamada es una rutina de servicio de interrupción (ISR) del controlador UMDF, que se llama a PASSIVE_LEVEL cuando se produce una interrupción de hardware.
Para una interrupción desencadenada por el borde o una interrupción con señal de mensaje (MSI), el marco llama a OnInterruptIsr fuera del contexto de distribución de interrupciones del sistema operativo. Esto se debe a que UMDF solo permite interrupciones perimetrales no compartidas o MSI, y el controlador no necesita interactuar con su hardware en este contexto.
Para una interrupción desencadenada por el nivel, el marco llama a onInterruptIsr en el contexto del envío de interrupciones del sistema operativo. Como resultado, el subproceso de distribución de interrupciones del sistema operativo se bloquea en modo kernel a la espera de una respuesta del controlador.
Normalmente, OnInterruptIsr guarda cualquier información volátil que pueda perderse y borra la interrupción del hardware. Para una interrupción desencadenada por el nivel, el controlador debe detener y confirmar la interrupción en el dispositivo y, a continuación, devolver TRUE si posee la interrupción. El controlador debe realizar cualquier procesamiento adicional en un OnInterruptWorkItem devolución de llamada. Para poner en cola un elemento de trabajo, el controlador llama al método IWDFInterrupt::QueueWorkItemForIsr.
Para obtener más información sobre cómo controlar las interrupciones en los controladores UMDF, consulte acceso a hardware y control de interrupciones.
Ejemplos
El tipo de función se declara en wudfinterrupt.h, como se indica a continuación.
typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
Para definir un OnInterruptIsr función de devolución de llamada denominada MyInterruptIsr, primero debe proporcionar una declaración de función que requieren SDV y otras herramientas de comprobación, como se indica a continuación:
WUDF_INTERRUPT_NOTIFY MyInterruptIsr;
A continuación, implemente la función de devolución de llamada de la siguiente manera:
BOOLEAN
MyInterruptIsr (
IN IWDFInterrupt* Interrupt,
IN ULONG MessageID,
IN ULONG Reserved
)
{…}
Requisitos
Requisito | Valor |
---|---|
fin del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
de la plataforma de destino de | Escritorio |
versión mínima de UMDF | 1.11 |
encabezado de | wudfinterrupt.h |