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 vers un objet d’interruption de framework.

Valeur de retour

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

Une vérification de bogue 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 evtInterruptDpc fonction de rappel 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 FAUX jusqu’à ce que le framework déqueue la fonction de rappel EvtInterruptDpc.

Le rappel EvtInterruptDpc s’exécutera 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 EvtInterruptDpc fonction de rappel est déjà déqueuée ou en cours d’exécution, la deuxième EvtInterruptDpc rappel 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 de niveau 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);
...
}

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

Voir aussi

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate