Partager via


WdfInterruptReportInactive, fonction (wdfinterrupt.h)

[S’applique à KMDF uniquement]

La méthode WdfInterruptReportInactive informe le système que l’interruption n’est plus active et que le pilote n’attend pas de demandes d’interruption sur les lignes associées.

Syntaxe

void WdfInterruptReportInactive(
  [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 WdfInterruptReportInactive.

Lorsqu’un pilote appelle WdfInterruptReportInactive, l’infrastructure de gestion de l’alimentation (PoFx) peut ensuite effectuer des tâches de gestion de l’alimentation associées.

En règle générale, un pilote appelle WdfInterruptReportInactive à partir de sa routine ComponentIdleConditionCallback ou de ComponentIdleStateCallback lorsque l’état est supérieur à zéro (indiquant un état Fx de faible puissance).

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.

Exemples

L’exemple suivant montre comment un pilote peut appeler WdfInterruptReportInactive à 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;
    PFDO_INTERRUPT_CONTEXT interruptContext;

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

    switch (State) {
        case 0:
             …
            break;

        //
        // PoFx may make us go to any of the F-states directly, hence we execute
        // F0Exit code for all of the Fx states. Note that transition to any Fx 
        // state happens from F0 (and not another Fx state).
        //
        default:
            //
            // Disable interrupt generation at hardware if needed.
            // 
            WdfInterruptAcquireLock(deviceData->Interrupt);
            DisableInterruptInHardware();
            WdfInterruptReleaseLock(deviceData->Interrupt);

            //
            // Report that interrupt is now inactive.
            //
            WdfInterruptReportInactive(deviceData->Interrupt);

            interruptContext->ReportedInactive = TRUE;

        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

WdfInterruptReportActive