EVT_WDF_INTERRUPT_WORKITEM fonction de rappel (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement EvtInterruptWorkItem d’un pilote traite les informations d’interruption stockées par la fonction de rappel EvtInterruptIsr du pilote.

Syntaxe

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

Paramètres

[in] Interrupt

Handle pour un objet d’interruption de framework.

[in] AssociatedObject

Handle à l’objet de périphérique d’infrastructure que le pilote a transmis à WdfInterruptCreate.

Valeur de retour

None

Remarques

La fonction de rappel EvtInterruptWorkItem s’exécute sur IRQL = PASSIVE_LEVEL.

Pour inscrire une fonction de rappel EvtInterruptWorkItem , votre pilote doit placer l’adresse de la fonction de rappel dans une structure WDF_INTERRUPT_CONFIG avant d’appeler WdfInterruptCreate.

La plupart des pilotes utilisent une seule fonction de rappel EvtInterruptWorkItem pour chaque type d’interruption.

Pour planifier l’exécution d’une fonction de rappel EvtInterruptWorkItem , le pilote doit appeler WdfInterruptQueueWorkItemForIsr à partir de la fonction de rappel EvtInterruptIsr .

Si votre pilote crée plusieurs objets d’interruption d’infrastructure pour chaque appareil, vous pouvez envisager d’utiliser un rappel EvtInterruptWorkItem distinct pour chaque interruption.

Les pilotes qui implémentent la gestion des interruptions DIRQL ou la gestion des interruptions de niveau passif peuvent mettre en file d’attente un rappel EvtInterruptWorkItem .

Un pilote ne peut pas mettre en file d’attente à la fois un rappel EvtInterruptDpc et un rappel EvtInterruptWorkItem .

Si le pilote a défini le membre AutomaticSerialization sur TRUE dans la structure WDF_INTERRUPT_CONFIG de l’interruption, l’infrastructure synchronise l’exécution de la fonction de rappel EvtInterruptWorkItem de l’objet d’interruption avec les fonctions de rappel d’autres objets qui se trouvent sous l’objet parent de l’interruption. Pour plus d’informations sur les verrous de synchronisation de rappel, consultez Utilisation de verrous d’infrastructure.

En général, si le pilote doit acquérir le verrou passif de l’objet d’interruption à partir d’EvtInterruptWorkItem, le pilote doit définir le membre AutomaticSerialization de WDF_INTERRUPT_CONFIG sur FALSE, puis appeler WdfInterruptAcquireLock à partir de EvtInterruptWorkItem.

Si AutomaticSerialization a la valeur TRUE, la fonction de rappel EvtInterruptWorkItem d’un pilote ne doit appeler aucune des méthodes suivantes :

WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable Pour plus d’informations sur la gestion des interruptions dans les pilotes basés sur l’infrastructure, consultez Gestion des interruptions matérielles.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.11
Version UMDF minimale 2.0
En-tête wdfinterrupt.h (inclure Wdf.h)
IRQL PASSIVE_LEVEL