Partager via


WdfInterruptReportActive, fonction (wdfinterrupt.h)

[S’applique à KMDF uniquement]

WdfInterruptReportActive informe le système que l’interruption est active et que le pilote est prêt à traiter les demandes d’interruption sur les lignes associées.

Syntaxe

void WdfInterruptReportActive(
  [in] WDFINTERRUPT Interrupt
);

Paramètres

[in] Interrupt

Handle pour un objet d’interruption de framework.

Valeur de retour

None

Remarques

Seuls les pilotes qui implémentent la gestion de l’alimentation de l’état fonctionnel appellent WdfInterruptReportActive.

Un pilote n’a pas besoin d’appeler WdfInterruptReportActive immédiatement après avoir créé une interruption. Le pilote ne doit appeler WdfInterruptReportActive qu’après avoir précédemment appelé WdfInterruptReportInactive.

En règle générale, un pilote appelle WdfInterruptReportActive à partir de sa routine ComponentActiveConditionCallback ou de ComponentIdleStateCallback lorsque State a la valeur 0 (indiquant l’état complet sur F0).

Si votre pilote appelle cette méthode sur un système d’exploitation avant Windows 8, le vérificateur de l’infrastructure signale une erreur.

Pour plus d’informations, consultez Prise en charge des états d’alimentation fonctionnels.

Exemples

L’exemple suivant montre comment un pilote peut appeler WdfInterruptReportActive à partir de la routine ComponentIdleStateCallback d’un pilote KMDF. Le pilote inscrit un seul composant en appelant WdfDeviceWdmAssignPowerFrameworkSettings.

VOID
MyComponentIdleStateCallback(
    _In_ PVOID Context,
    _In_ ULONG Component,
    _In_ ULONG State
    )
{
    PFDO_DEVICE_DATA deviceData;
    PINTERRUPT_CONTEXT interruptContext;

    deviceData = FdoGetData((WDFDEVICE)Context);
    interruptContext = InterruptGetData(deviceData->Interrupt);

    switch (State) {
        case 0:
            if (interruptContext->ReportedInactive) {

                //
                // the interrupt was reported inactive earlier. We need to report active now.
                //
                WdfInterruptReportActive(deviceData->Interrupt);
                interruptContext->ReportedInactive = FALSE;

                //
                // Enable interrupt generation at hardware.
                // 
                WdfInterruptAcquireLock(deviceData->Interrupt);
                EnableInterruptInHardware();
                WdfInterruptReleaseLock(deviceData->Interrupt);

            }

        break;


    …

}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Plateforme cible Universal
Version KMDF minimale 1.11
En-tête wdfinterrupt.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

WdfInterruptReportInactive