Funzione WdfInterruptReportInactive (wdfinterrupt.h)
[Si applica solo a KMDF]
Il metodo WdfInterruptReportInactive informa il sistema che l'interruzione non è più attiva e il driver non prevede richieste di interruzione nelle righe associate.
Sintassi
void WdfInterruptReportInactive(
[in] WDFINTERRUPT Interrupt
);
Parametri
[in] Interrupt
Handle per un oggetto di interruzione del framework.
Valore restituito
nessuno
Osservazioni
Solo i driver che implementano la chiamata di risparmio energia dello stato funzionale WdfInterruptReportInactive.
Quando un driver chiama WdfInterruptReportInactive, il framework di gestione energia (PoFx) può quindi eseguire attività di risparmio energia correlate.
In genere, un driver chiama WdfInterruptReportInactive dalla routine ComponentIdleConditionCallback o da ComponentIdleStateCallback quando State è maggiore di zero (indicando uno stato fx a bassa potenza).
Se il driver chiama questo metodo in un sistema operativo precedente a Windows 8, il verificatore del framework segnala un errore.
Esempio
Nell'esempio seguente viene illustrato come un driver potrebbe chiamare WdfInterruptReportInactive dalla routine ComponentIdleStateCallback di un driver KMDF. Il driver registra un singolo componente chiamando 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;
…
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.11 |
Intestazione | wdfinterrupt.h (include Wdf.h) |
Libreria | Wdf01000.sys (vedere Framework Library Versioning). |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf) |