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) |