Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[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.
Valor de retorno
Nenhum
Observações
Somente os drivers que implementam a chamada de gerenciamento de energia de estado funcional WdfInterruptReportInactive.
Quando um driver chama WdfInterruptReportInactive, a PoFx (estrutura de gerenciamento de energia) pode executar tarefas de gerenciamento de energia relacionadas.
Normalmente, um driver chama WdfInterruptReportInactive de sua rotina de ComponentIdleConditionCallback ou de ComponentIdleStateCallback quando State for maior que zero (indicando um estado fx de baixa potência).
Se o driver chamar esse método em um sistema operacional anterior ao Windows 8, o verificador da estrutura relatará um erro.
Exemplos
O exemplo a seguir mostra como um driver pode chamar WdfInterruptReportInactive da rotina de 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;
…
}