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) |