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 eventos EvtInterruptWorkIte m de un controlador procesa la información de interrupción que ha almacenado la función de devolución de llamada del controlador EvtInterruptIsr función de devolución de llamada.

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 del marco.

[in] AssociatedObject

Identificador del objeto de dispositivo de marco que el controlador pasó a WdfInterruptCreate.

Valor devuelto

Ninguno

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 función de devolución de llamada WdfInterruptQueueWorkItemForIs r desde el EvtInterruptIsr función de devolución de llamada.

Si el controlador crea varios objetos de interrupción del marco para cada dispositivo, puede considerar la posibilidad de usar un EvtInterruptWorkItem independiente devolución de llamada 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 un EvtInterruptWorkItem devolución de llamada.

Un controlador no puede poner en cola una EvtInterruptDpc y una devolución de llamada 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 del objeto de interrupción EvtInterruptWorkItem función de devolución de llamada 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 Using Framework Locks.

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, el EvtInterruptWorkItem de un controlador función de devolución de llamada no debe llamar a ninguno de los métodos siguientes:

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

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.11
versión mínima de UMDF 2.0
encabezado wdfinterrupt.h (incluya Wdf.h)
irQL PASSIVE_LEVEL