Compartilhar via


Função WdfInterruptReportActive (wdfinterrupt.h)

[Aplica-se somente ao KMDF]

O WdfInterruptReportActive informa ao sistema que a interrupção está ativa e que o driver está pronto para processar solicitações de interrupção nas linhas associadas.

Sintaxe

void WdfInterruptReportActive(
  [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 WdfInterruptReportActive.

Um driver não precisa chamar WdfInterruptReportActive imediatamente após a criação de uma interrupção. O driver só deve chamar WdfInterruptReportActive depois de ter chamado anteriormente WdfInterruptReportInactive.

Normalmente, um driver chama WdfInterruptReportActive de sua rotina ComponentActiveConditionCallback ou de ComponentIdleStateCallback quando State é 0 (indicando o estado totalmente em F0).

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

Para obter mais informações, consulte Suporte a estados de energia funcionais.

Exemplos

O exemplo a seguir mostra como um driver pode chamar WdfInterruptReportActive 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;
    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;


    …

}

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

WdfInterruptReportInactive