EVT_WDF_INTERRUPT_DPC fonction de rappel (wdfinterrupt.h)
[S’applique à KMDF et UMDF]
La fonction de rappel d’événement EvtInterruptDpc d’un pilote traite les informations d’interruption que la fonction de rappel EvtInterruptIsr du pilote a stockées.
Syntaxe
EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;
void EvtWdfInterruptDpc(
[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
Pour inscrire une fonction de rappel EvtInterruptDpc , votre pilote doit placer l’adresse de la fonction de rappel dans une structure WDF_INTERRUPT_CONFIG avant d’appeler WdfInterruptCreate.
Les pilotes effectuent généralement des demandes d’E/S dans leurs fonctions de rappel EvtInterruptDpc .
La fonction de rappel EvtInterruptDpc s’exécute à DISPATCH_LEVEL et ne doit pas accéder au code paginable . Si une fonction de rappel EvtInterruptDpc doit effectuer des opérations à IRQL = PASSIVE_LEVEL, elle peut utiliser des éléments de travail d’infrastructure.
Dans KMDF version 1.11 et ultérieures, votre pilote peut prendre en charge les interruptions de niveau passif et fournir une fonction de rappel EvtInterruptWorkItem ou EvtInterruptDpc . Si votre pilote prend en charge les interruptions de niveau passif et fournit une fonction de rappel EvtInterruptDpc , le pilote ne peut pas acquérir le verrou d’interruption de niveau passif à partir du rappel.
La plupart des pilotes utilisent une seule fonction de rappel EvtInterruptDpc pour chaque type d’interruption. Si votre pilote crée plusieurs objets de file d’attente d’infrastructure pour chaque appareil, vous pouvez envisager d’utiliser un objet DPC distinct et une fonction de rappel EvtDpcFunc pour chaque file d’attente.
Pour planifier l’exécution d’une fonction de rappel EvtInterruptDpc , le pilote doit appeler WdfInterruptQueueDpcForIsr à partir de la fonction de rappel EvtInterruptIsr .
Lorsqu’un pilote planifie l’exécution d’une fonction de rappel EvtInterruptDpc , le système ajoute un objet DPC à la file d’attente DPC du système. Si le système n’exécute pas de tâches de priorité supérieure, il supprime l’objet de la file d’attente et appelle la fonction de rappel EvtInterruptDpc .
Le système n’ajoute pas l’objet DPC à la file d’attente DPC si l’objet est déjà mis en file d’attente. Une fonction de rappel EvtInterruptIsr peut être appelée plusieurs fois avant que le système appelle la fonction de rappel EvtInterruptDpc . Par conséquent, la fonction de rappel EvtInterruptDpc doit être en mesure de traiter les informations de plusieurs interruptions, et elle doit traiter toutes les interruptions qui se sont produites depuis la dernière fois qu’elle a été appelée.
En règle générale, il est nécessaire de synchroniser l’exécution de la fonction de rappel EvtInterruptDpc d’un pilote avec l’exécution d’autres fonctions de rappel. Pour plus d’informations, consultez Synchronisation du code d’interruption.
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.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfinterrupt.h (inclure Wdf.h) |
IRQL | (Voir la section Notes.) |