Freigeben über


WdfInterruptReportActive-Funktion (wdfinterrupt.h)

[Gilt nur für KMDF]

WdfInterruptReportActive informiert das System darüber, dass der Interrupt aktiv ist und der Treiber bereit ist, Interruptanforderungen für die zugeordneten Zeilen zu verarbeiten.

Syntax

void WdfInterruptReportActive(
  [in] WDFINTERRUPT Interrupt
);

Parameter

[in] Interrupt

Ein Handle für ein Framework-Interruptobjekt.

Rückgabewert

Keine

Bemerkungen

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

Ein Treiber muss WdfInterruptReportActive nicht sofort nach dem Erstellen eines Interrupts aufrufen. Der Treiber sollte WdfInterruptReportActive nur aufrufen, nachdem er zuvor WdfInterruptReportInactive aufgerufen hat.

In der Regel ruft ein Treiber WdfInterruptReportActive entweder aus seiner ComponentActiveConditionCallback-Routine oder aus ComponentIdleStateCallback auf, wenn State 0 ist (was den vollständigen F0-Zustand angibt).

Wenn Ihr Treiber diese Methode auf einem früheren Betriebssystem als Windows 8 aufruft, meldet die Überprüfung des Frameworks einen Fehler.

Weitere Informationen finden Sie unter Unterstützen funktionaler Energiezustände.

Beispiele

Das folgende Beispiel zeigt, wie ein Treiber WdfInterruptReportActive aus der 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;
    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;


    …

}

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 Versionsverwaltung der Frameworkbibliothek).)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf)

Weitere Informationen

WdfInterruptReportInactive