Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[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) |