Partager via


WdfInterruptQueueDpcForIsr, fonction (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

La méthode WdfInterruptQueueDpcForIsr met en file d’attente la fonction de rappel EvtInterruptDpc d’un objet d’interruption de framework pour l’exécution.

Syntaxe

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

Paramètres

[in] Interrupt

Handle pour un objet d’interruption de framework.

Valeur retournée

WdfInterruptQueueDpcForIsr retourne TRUE s’il met correctement en file d’attente la fonction de rappel EvtInterruptDpc de l’objet d’interruption. La méthode retourne FALSE si la fonction de rappel a été précédemment mise en file d’attente et n’a pas été exécutée.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Les pilotes appellent généralement WdfInterruptQueueDpcForIsr à partir d’une fonction de rappel EvtInterruptIsr .

La fonction de rappel EvtInterruptDpc d’un objet d’interruption ne peut être mise en file d’attente qu’une seule fois avant son exécution. Par conséquent, si un appel à WdfInterruptQueueDpcForIsr réussit, les appels suivants retournent FALSE jusqu’à ce que l’infrastructure supprime la fonction de rappel EvtInterruptDpc .

Le rappel EvtInterruptDpc s’exécute sur le processeur qui l’a mis en file d’attente. Si votre pilote appelle WdfInterruptQueueDpcForIsr pour mettre en file d’attente une autre DPC alors qu’une fonction de rappel EvtInterruptDpc est déjà en attente ou en cours d’exécution, le deuxième rappel EvtInterruptDpc peut même s’exécuter avant la fin du premier.

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

Dans KMDF 1.11 et versions ultérieures, un pilote peut appeler WdfInterruptQueueDpcForIsr à partir d’un ISR passif. Notez qu’un pilote peut inscrire un élément de travail ou un DPC, mais pas les deux.

Exemples

L’exemple de code suivant montre comment une fonction de rappel EvtInterruptIsr doit mettre en file d’attente une fonction de rappel EvtInterruptDpc .

BOOLEAN
MyEvtInterruptIsr(
    IN WDFINTERRUPT Interrupt,
    IN ULONG  MessageID
    )
{
    BOOLEAN queueDpcSuccess;

    //
    // Save interrupt information for the
    // EvtInterruptDpc function.
    //
...
    //
    // Queue the EvtInterruptDpc function.
    //
    queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}

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)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <=DIRQL
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate