Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[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.
Valor de retorno
Nenhum
Observações
Somente os drivers que implementam a chamada de gerenciamento de energia de estado funcional 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 de 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 ao 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 do ComponentIdleStateCallback rotina 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;
…
}