Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[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 ha almacenado la función de devolución de llamada del controlador EvtInterruptIsr.
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 del marco.
[in] AssociatedObject
Identificador del objeto de dispositivo de marco que el controlador pasó a WdfInterruptCreate.
Valor devuelto
Ninguno
Observaciones
Para registrar un EvtInterruptDpc 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 WDF_INTERRUPT_CONFIG antes de llamar a WdfInterruptCreate.
Los controladores normalmente solicitudes de E/S completas 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 EvtInterruptWorkIte m o un EvtInterruptDpc función de devolución de llamada. Si el controlador admite interrupciones de nivel pasivo y proporciona un EvtInterruptDpc función de devolución de llamada, el controlador no puede adquirir el bloqueo de interrupción de nivel pasivo desde dentro de la devolución de llamada.
La mayoría de los controladores usan una sola función de devolución de llamada EvtInterruptDpc para cada tipo de interrupción. Si el controlador crea varios objetos de cola de marco de trabajo para cada dispositivo, puede considerar el uso de una función de devolución de llamada DPC independiente y EvtDpcFunc función de devolución de llamada 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 un EvtInterruptDpc función de devolución de llamada, 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 EvtInterruptDpc función de devolución de llamada.
El sistema no agrega el objeto DPC a la cola DPC si el objeto ya está en cola. Se puede llamar a una función de devolución de llamada EvtInterruptIsr varias veces antes de que el sistema llame a la función de devolución de llamada EvtInterruptDpc. Por lo tanto, el EvtInterruptDpc función de devolución de llamada debe poder procesar 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 EvtInterruptDpc de un controlador función de devolución de llamada con la ejecución de otras funciones de devolución de llamada. Para obtener más información, vea Sincronización del 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 | Valor |
|---|---|
| de la plataforma de destino de | Universal |
| versión mínima de KMDF | 1.0 |
| versión mínima de UMDF | 2.0 |
| encabezado | wdfinterrupt.h (incluya Wdf.h) |
| irQL | (Consulte la sección Comentarios). |