Partager via


EVT_WDF_INTERRUPT_DPC fonction de rappel (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement EvtInterruptDpc du 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 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

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 demandes d’E/S complètes dans leurs fonctions de rappel EvtInterruptDpc.

La fonction de rappel EvtInterruptDpc s’exécute à DISPATCH_LEVEL et ne doit pas accéder code paginable. Si une fonction de rappel EvtInterruptDpc doit effectuer des opérations à IRQL = PASSIVE_LEVEL, elle peut utiliser des éléments de travail de framework.

Dans KMDF version 1.11 et ultérieure, votre pilote peut prendre en charge interruptions de niveau passif et fournir une EvtInterruptWorkItem ou une EvtInterruptDpc fonction de rappel. Si votre pilote prend en charge les interruptions de niveau passif et fournit une EvtInterruptDpc fonction de rappel, le pilote ne peut pas acquérir le verrou d’interruption de niveau passif à partir du rappel.

La plupart des pilotes utilisent une seule EvtInterruptDpc fonction de rappel pour chaque type d’interruption. Si votre pilote crée plusieurs objets de file d’attente framework pour chaque appareil, vous pouvez envisager d’utiliser une d’objet DPC distincte et EvtDpcFunc fonction de rappel 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’un EvtInterruptDpc fonction de rappel, 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, le EvtInterruptDpc fonction de rappel doit être en mesure de traiter les informations de plusieurs interruptions, et il 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 des EvtInterruptDpc fonction de rappel 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.

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
En-tête wdfinterrupt.h (include Wdf.h)
IRQL (Voir la section Remarques.)

Voir aussi

EvtDpcFunc

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptQueueDpcForIsr