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