Condividi tramite


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)

Vedi anche

WdfInterruptReportActive