Partager via


EVT_WDF_INTERRUPT_ENABLE fonction de rappel (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement EvtInterruptEnable d’un pilote active une interruption matérielle spécifiée.

Syntaxe

EVT_WDF_INTERRUPT_ENABLE EvtWdfInterruptEnable;

NTSTATUS EvtWdfInterruptEnable(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFDEVICE AssociatedDevice
)
{...}

Paramètres

[in] Interrupt

Handle pour un objet d’interruption de framework.

[in] AssociatedDevice

Handle à l’objet de périphérique d’infrastructure que le pilote a transmis à WdfInterruptCreate.

Valeur retournée

La fonction de rappel EvtInterruptEnable doit retourner STATUS_SUCCESS ou une autre valeur de status pour laquelle NT_SUCCESS(status) est égal à TRUE si la fonction ne rencontre aucune erreur. Sinon, cette fonction doit retourner une valeur status pour laquelle NT_SUCCESS(status) est égal à FALSE.

Remarques

Pour inscrire une fonction de rappel EvtInterruptEnable , votre pilote doit placer l’adresse de la fonction de rappel dans une structure WDF_INTERRUPT_CONFIG avant d’appeler WdfInterruptCreate.

Le framework appelle la fonction de rappel EvtInterruptEnable du pilote chaque fois que l’appareil entre dans son état de fonctionnement (D0). En outre, un pilote peut amener l’infrastructure à appeler la fonction de rappel EvtInterruptEnable en appelant WdfInterruptEnable. Notez que la plupart des pilotes basés sur l’infrastructure ne doivent pas appeler WdfInterruptEnable, car le framework appelle la fonction de rappel EvtInterruptEnable du pilote chaque fois que l’appareil passe à son état de fonctionnement (D0).

Avant d’appeler la fonction de rappel EvtInterruptEnable , l’infrastructure élève l’IRQL du processeur au DIRQL de l’appareil et acquiert le verrou de rotation que le pilote a spécifié dans la structure WDF_INTERRUPT_CONFIG de l’objet d’interruption.

À compter de la version 1.11 de KMDF, votre pilote peut fournir une gestion passive des interruptions. Si le pilote a demandé la gestion des interruptions de niveau passif, avant d’appeler la fonction EvtInterruptEnable à IRQL = PASSIVE_LEVEL, l’infrastructure acquiert le verrou d’interruption de niveau passif que le pilote a configuré dans la structure WDF_INTERRUPT_CONFIG de l’objet d’interruption.

Une fois la fonction de rappel EvtInterruptEnable retournée, l’infrastructure appelle la fonction de rappel d’événement EvtDeviceD0EntryPostInterruptsEnabled du pilote à l’adresse IRQL = PASSIVE_LEVEL.

Vous ne devez pas supposer qu’un appareil utilisera les mêmes ressources d’interruption chaque fois que l’infrastructure appelle la fonction de rappel EvtInterruptEnable de votre pilote. Parfois, le gestionnaire PnP redistribue les ressources système et peut affecter de nouvelles ressources d’interruption à votre appareil. Le pilote peut appeler WdfInterruptGetInfo pour déterminer les ressources d’interruption d’un appareil.

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

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)
IRQL (Voir la section Notes.)

Voir aussi

EvtDeviceD0EntryPostInterruptsEnabled

EvtInterruptDisable

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptEnable

WdfInterruptGetInfo