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]
Le EvtInterruptIsr d’un pilote fonction de rappel d’événements est une interruption matérielle.
Syntaxe
EVT_WDF_INTERRUPT_ISR EvtWdfInterruptIsr;
BOOLEAN EvtWdfInterruptIsr(
[in] WDFINTERRUPT Interrupt,
[in] ULONG MessageID
)
{...}
Paramètres
[in] Interrupt
Handle vers un objet d’interruption de framework.
[in] MessageID
Si l’appareil utilise des interruptions signalées par des messages (MSIs), ce paramètre est le numéro de message qui identifie le message d’interruption matérielle de l’appareil. Sinon, cette valeur est 0.
Valeur de retour
La fonction de rappel EvtInterruptIsr doit retourner TRUE si la fonction service l’interruption matérielle. Sinon, cette fonction doit retourner faux.
Remarques
Pour inscrire une fonction de rappel EvtInterruptIsr, votre pilote doit placer l’adresse de la fonction de rappel dans une structure WDF_INTERRUPT_CONFIG avant d’appeler WdfInterruptCreate.
La fonction de rappel EvtInterruptIsr est une routine de service d’interruption (ISR) basée sur le framework, appelée lorsqu’une interruption matérielle se produit.
Si l’interruption ne provient pas du matériel que cette EvtInterruptIsr services de fonction de rappel, le pilote doit retourner FALSE. Si le vecteur d’interruption est partagé, le système appelle une autre routine de service d’interruption.
Si le pilote n’a pas demandé de gestion au niveau passif pour un objet d’interruption, avant d’appeler le EvtInterruptIsr fonction de rappel, l’infrastructure déclenche l’IRQL du processeur vers le runtime d’intégration de l’appareil (DIRQL) et acquiert le verrou de rotation que le pilote spécifié dans la structure WDF_INTERRUPT_CONFIG de l’objet d’interruption.
Étant donné que l'EvtInterruptIsr fonction de rappel s’exécute à un irQL relativement élevé, il peut appeler très peu de méthodes d’objet framework ou de routines système. En outre, cette fonction de rappel ne peut pas accéder à code paginable.
En règle générale, le EvtInterruptIsr fonction de rappel efface l’interruption matérielle et enregistre toutes les informations susceptibles d’être perdues après le retour de la fonction de rappel et le système réduit le runtime d’intégration (car la réduction de l’IRQL permet des interruptions supplémentaires). Les pilotes basés sur l’infrastructure enregistrent des informations sur l’interruption dans l’espace de contexte de l’objet d’interruption.
Les pilotes fournissent généralement un EvtInterruptDpc fonction de rappel pour traiter les informations enregistrées à un irQL inférieur. (Quelques pilotes fournissent une ou plusieurs fonctions de rappel EvtDpcFunc au lieu d’une fonction de rappel EvtInterruptDpc.) Pour plus d’informations sur la planification d’une fonction de rappel EvtInterruptDpc pour l’exécution, consultez Maintenance d’und’interruption.
La fonction de rappel EvtInterruptIsr doit être en mesure de traiter plusieurs interruptions avant l’exécution de la fonction de rappel EvtInterruptDpc. Par conséquent, le pilote peut devoir stocker des données d’interruption à partir de plusieurs interruptions, et les EvtInterruptIsr etEvtInterruptDpc fonctions de rappel peuvent avoir à déterminer quelles données d’interruption ont été complètement traitées par le pilote et qui n’a pas.
À compter de la version 1.11 de KMDF, votre pilote peut fournir gestion des interruptions au niveau passif. Si le pilote a demandé la gestion passive d’un objet d’interruption, avant d’appeler le EvtInterruptIsr fonction de rappel à IRQL = PASSIVE_LEVEL, l’infrastructure acquiert le verrou d’interruption au niveau passif que le pilote a configuré dans la structure WDF_INTERRUPT_CONFIG de l’objet d’interruption. Comme pour la gestion des interruptions au niveau de DIRQL, la fonction EvtInterruptIsr du pilote doit toujours enregistrer des informations sur l’interruption pour le traitement ultérieur.
Les pilotes qui prennent en charge la gestion des interruptions de niveau passif peuvent fournir une fonction de rappel EvtInterruptWorkItem ou un EvtInterruptDpc fonction de rappel pour traiter les informations enregistrées.
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.) |