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) |