EVT_WDF_INTERRUPT_DPC función de devolución de llamada (wdfinterrupt.h)
[Se aplica a KMDF y UMDF]
La función de devolución de llamada de evento EvtInterruptDpc de un controlador procesa la información de interrupción que la función de devolución de llamada EvtInterruptIsr del controlador ha almacenado.
Sintaxis
EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;
void EvtWdfInterruptDpc(
[in] WDFINTERRUPT Interrupt,
[in] WDFOBJECT AssociatedObject
)
{...}
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción de marco.
[in] AssociatedObject
Identificador del objeto de dispositivo de marco que el controlador pasó a WdfInterruptCreate.
Valor devuelto
None
Observaciones
Para registrar una función de devolución de llamada EvtInterruptDpc , el controlador debe colocar la dirección de la función de devolución de llamada en una estructura de WDF_INTERRUPT_CONFIG antes de llamar a WdfInterruptCreate.
Normalmente, los controladores completan las solicitudes de E/S en sus funciones de devolución de llamada EvtInterruptDpc .
La función de devolución de llamada EvtInterruptDpc se ejecuta en DISPATCH_LEVEL y no debe tener acceso al código paginable . Si una función de devolución de llamada EvtInterruptDpc debe realizar operaciones en IRQL = PASSIVE_LEVEL, puede usar elementos de trabajo de marco.
En la versión 1.11 y posteriores de KMDF, el controlador puede admitir interrupciones de nivel pasivo y proporcionar una función de devolución de llamada EvtInterruptWorkItem o EvtInterruptDpc . Si el controlador admite interrupciones de nivel pasivo y proporciona una función de devolución de llamada EvtInterruptDpc , el controlador no puede adquirir el bloqueo de interrupción de nivel pasivo desde la devolución de llamada.
La mayoría de los controladores usan una única función de devolución de llamada EvtInterruptDpc para cada tipo de interrupción. Si el controlador crea varios objetos de cola de marco para cada dispositivo, puede considerar la posibilidad de usar un objeto DPC independiente y una función de devolución de llamada EvtDpcFunc para cada cola.
Para programar la ejecución de una función de devolución de llamada EvtInterruptDpc , el controlador debe llamar a WdfInterruptQueueDpcForIsr desde la función de devolución de llamada EvtInterruptIsr .
Cuando un controlador programa la ejecución de una función de devolución de llamada EvtInterruptDpc , el sistema agrega un objeto DPC a la cola DPC del sistema. Si el sistema no ejecuta tareas de mayor prioridad, quita el objeto de la cola y llama a la función de devolución de llamada EvtInterruptDpc .
El sistema no agrega el objeto DPC a la cola DPC si el objeto ya está en cola. Una función de devolución de llamada EvtInterruptIsr podría llamarse varias veces antes de que el sistema llame a la función de devolución de llamada EvtInterruptDpc . Por lo tanto, la función de devolución de llamada EvtInterruptDpc debe poder procesar la información de varias interrupciones y debe procesar todas las interrupciones que se han producido desde la última vez que se llamó.
Normalmente, es necesario sincronizar la ejecución de la función de devolución de llamada EvtInterruptDpc de un controlador con la ejecución de otras funciones de devolución de llamada. Para obtener más información, vea Sincronizar código de interrupción.
Para obtener más información sobre el control de interrupciones en controladores basados en marcos, consulte Control de interrupciones de hardware.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfinterrupt.h (incluir Wdf.h) |
IRQL | (Vea la sección Comentarios.) |