Compartilhar via


Função WdfInterruptReportInactive (wdfinterrupt.h)

[Aplica-se somente ao KMDF]

O método WdfInterruptReportInactive informa ao sistema que a interrupção não está mais ativa e que o driver não está esperando solicitações de interrupção nas linhas associadas.

Sintaxe

void WdfInterruptReportInactive(
  [in] WDFINTERRUPT Interrupt
);

Parâmetros

[in] Interrupt

Um identificador para um objeto de interrupção de estrutura.

Retornar valor

Nenhum

Comentários

Somente os drivers que implementam o gerenciamento de energia de estado funcional chamam WdfInterruptReportInactive.

Quando um driver chama WdfInterruptReportInactive, a PoFx (estrutura de gerenciamento de energia) pode executar tarefas relacionadas de gerenciamento de energia.

Normalmente, um driver chama WdfInterruptReportInactive de sua rotina ComponentIdleConditionCallback ou de ComponentIdleStateCallback quando State é maior que zero (indicando um estado Fx de baixa potência).

Se o driver chamar esse método em um sistema operacional anterior a Windows 8, o verificador da estrutura relatará um erro.

Exemplos

O exemplo a seguir mostra como um driver pode chamar WdfInterruptReportInactive da rotina ComponentIdleStateCallback de um driver KMDF. O driver registra um único componente chamando 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;

    …

}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Plataforma de Destino Universal
Versão mínima do KMDF 1.11
Cabeçalho wdfinterrupt.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL <=DISPATCH_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf)

Confira também

WdfInterruptReportActive