Condividi tramite


Funzione WdfInterruptReportActive (wdfinterrupt.h)

[Si applica solo a KMDF]

WdfInterruptReportActive informa il sistema che l'interrupt è attivo e il driver è pronto per elaborare le richieste di interruzione nelle righe associate.

Sintassi

void WdfInterruptReportActive(
  [in] WDFINTERRUPT Interrupt
);

Parametri

[in] Interrupt

Handle per un oggetto interrupt del framework.

Valore restituito

nessuno

Osservazioni

Solo i driver che implementano il risparmio energia a stato funzionale chiamano WdfInterruptReportActive.

Un driver non deve chiamare WdfInterruptReportActive immediatamente dopo la creazione di un interrupt. Il driver deve chiamare WdfInterruptReportActive solo dopo aver precedentemente chiamato WdfInterruptReportInactive.

In genere, un driver chiama WdfInterruptReportActive dalla routine ComponentActiveConditionCallback o da ComponentIdleStateCallback quando State è 0 (che indica completamente lo stato F0).

Se il driver chiama questo metodo in un sistema operativo precedente a Windows 8, il verificatore del framework segnala un errore.

Per altre informazioni, vedere Supporto degli stati di alimentazione funzionale.

Esempio

Nell'esempio seguente viene illustrato come un driver potrebbe chiamare WdfInterruptReportActive 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;
    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;


    …

}

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 Controllo delle versioni della libreria framework).
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf)

Vedi anche

WdfInterruptReportInactive