Función WdfInterruptReportInactive (wdfinterrupt.h)
[Solo se aplica a KMDF]
El método WdfInterruptReportInactive informa al sistema de que la interrupción ya no está activa y el controlador no espera solicitudes de interrupción en las líneas asociadas.
Sintaxis
void WdfInterruptReportInactive(
[in] WDFINTERRUPT Interrupt
);
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción de marco.
Valor devuelto
None
Observaciones
Solo los controladores que implementan la administración de energía de estado funcional llaman a WdfInterruptReportInactive.
Cuando un controlador llama a WdfInterruptReportInactive, el marco de administración de energía (PoFx) puede realizar tareas de administración de energía relacionadas.
Normalmente, un controlador llama a WdfInterruptReportInactive desde su rutina ComponentIdleConditionCallback o desde ComponentIdleStateCallback cuando State es mayor que cero (lo que indica un estado Fx de baja potencia).
Si el controlador llama a este método en un sistema operativo anterior a Windows 8, el comprobador del marco notifica un error.
Ejemplos
En el ejemplo siguiente se muestra cómo un controlador podría llamar a WdfInterruptReportInactive desde la rutina ComponentIdleStateCallback de un controlador KMDF. El controlador registra un único componente llamando a 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 | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.11 |
Encabezado | wdfinterrupt.h (incluir Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |