Partager via


EVT_WDF_INTERRUPT_WORKITEM fonction de rappel (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

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

Syntaxe

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

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

Paramètres

[in] Interrupt

Handle vers un objet d’interruption de framework.

[in] AssociatedObject

Handle de l’objet de périphérique framework que le pilote a passé à WdfInterruptCreate.

Valeur de retour

Aucun

Remarques

La fonction de rappel EvtInterruptWorkItem s’exécute à 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 EvtInterruptWorkItem fonction de rappel 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 une EvtInterruptWorkItem rappel 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 une EvtInterruptWorkItem rappel.

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

Si le pilote a défini la AutomaticSerialization membre sur TRUE dans la structure WDF_INTERRUPT_CONFIG de l’interruption, l’infrastructure synchronise l’exécution de l’objet d’interruption EvtInterruptWorkItem fonction de rappel avec des 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 Using Framework Locks.

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

Si automaticSerialization a la valeur TRUE, la fonction de rappel EvtInterruptWorkItem du pilote ne doit pas appeler l’une des méthodes suivantes :

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

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.11
version minimale de UMDF 2.0
En-tête wdfinterrupt.h (include Wdf.h)
IRQL PASSIVE_LEVEL