Compartir a través de


EVT_WDF_INTERRUPT_WORKITEM 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 EvtInterruptWorkItem 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_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [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

La función de devolución de llamada EvtInterruptWorkItem se ejecuta en IRQL = PASSIVE_LEVEL.

Para registrar una función de devolución de llamada EvtInterruptWorkItem , 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.

La mayoría de los controladores usan una sola función de devolución de llamada EvtInterruptWorkItem para cada tipo de interrupción.

Para programar la ejecución de una función de devolución de llamada EvtInterruptWorkItem , el controlador debe llamar a WdfInterruptQueueWorkItemForIsr desde la función de devolución de llamada EvtInterruptIsr .

Si el controlador crea varios objetos de interrupción de marco para cada dispositivo, puede considerar la posibilidad de usar una devolución de llamada EvtInterruptWorkItem independiente para cada interrupción.

Los controladores que implementan el control de interrupciones de DIRQL o el control de interrupciones de nivel pasivo pueden poner en cola una devolución de llamada EvtInterruptWorkItem .

Un controlador no puede poner en cola una devolución de llamada EvtInterruptDpc y EvtInterruptWorkItem .

Si el controlador ha establecido el miembro AutomaticSerialization en TRUE en la estructura WDF_INTERRUPT_CONFIG de la interrupción, el marco sincroniza la ejecución de la función de devolución de llamada EvtInterruptWorkItem del objeto de interrupción con funciones de devolución de llamada de otros objetos que están debajo del objeto primario de la interrupción. Para obtener información sobre los bloqueos de sincronización de devolución de llamada, consulte Uso de bloqueos de marco.

En general, si el controlador necesita adquirir el bloqueo pasivo del objeto de interrupción desde EvtInterruptWorkItem, el controlador debe establecer el miembro AutomaticSerialization de WDF_INTERRUPT_CONFIG en FALSE y, a continuación, llamar a WdfInterruptAcquireLock desde EvtInterruptWorkItem.

Si AutomaticSerialization se establece en TRUE, la función de devolución de llamada EvtInterruptWorkItem de un controlador no debe llamar a ninguno de los métodos siguientes:

WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable Para obtener más información sobre el control de interrupciones en controladores basados en marcos, vea Controlar interrupciones de hardware.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.11
Versión mínima de UMDF 2.0
Encabezado wdfinterrupt.h (incluir Wdf.h)
IRQL PASSIVE_LEVEL