Freigeben über


WdfInterruptReportInactive-Funktion (wdfinterrupt.h)

[Gilt nur für KMDF]

Die WdfInterruptReportInactive-Methode informiert das System darüber, dass der Interrupt nicht mehr aktiv ist und der Treiber keine Interruptanforderungen für die zugeordneten Zeilen erwartet.

Syntax

void WdfInterruptReportInactive(
  [in] WDFINTERRUPT Interrupt
);

Parameter

[in] Interrupt

Ein Handle für ein Framework-Interruptobjekt.

Rückgabewert

Keine

Bemerkungen

Nur Treiber, die die Energieverwaltung für funktionalen Zustand implementieren, rufen WdfInterruptReportInactive auf.

Wenn ein Treiber WdfInterruptReportInactive aufruft, kann das Energieverwaltungsframework (PoFx) verwandte Energieverwaltungsaufgaben ausführen.

In der Regel ruft ein Treiber WdfInterruptReportInactive entweder über seine ComponentIdleConditionCallback-Routine oder über ComponentIdleStateCallback auf, wenn State größer als 0 ist (was einen Fx-Zustand mit niedriger Leistung angibt).

Wenn Ihr Treiber diese Methode unter einem Betriebssystem vor Windows 8 aufruft, meldet die Überprüfung des Frameworks einen Fehler.

Beispiele

Das folgende Beispiel zeigt, wie ein Treiber WdfInterruptReportInactive über die ComponentIdleStateCallback-Routine eines KMDF-Treibers aufrufen kann. Der Treiber registriert eine einzelne Komponente, indem er WdfDeviceWdmAssignPowerFrameworkSettings aufruft.

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;

    …

}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Zielplattform Universell
KMDF-Mindestversion 1.11
Kopfzeile wdfinterrupt.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf)

Weitere Informationen

WdfInterruptReportActive