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 |