Función WdfInterruptReportActive (wdfinterrupt.h)
[Solo se aplica a KMDF]
WdfInterruptReportActive informa al sistema de que la interrupción está activa y el controlador está listo para procesar solicitudes de interrupción en las líneas asociadas.
Sintaxis
void WdfInterruptReportActive(
[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 WdfInterruptReportActive.
Un controlador no necesita llamar a WdfInterruptReportActive inmediatamente después de crear una interrupción. El controlador solo debe llamar a WdfInterruptReportActive después de haber llamado previamente a WdfInterruptReportInactive.
Normalmente, un controlador llama a WdfInterruptReportActive desde su rutina ComponentActiveConditionCallback o desde ComponentIdleStateCallback cuando State es 0 (lo que indica el estado completo en F0).
Si el controlador llama a este método en un sistema operativo anterior a Windows 8, el comprobador del marco notifica un error.
Para obtener más información, consulte Compatibilidad con estados de energía funcionales.
Ejemplos
En el ejemplo siguiente se muestra cómo un controlador podría llamar a WdfInterruptReportActive 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;
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 | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.11 |
Encabezado | wdfinterrupt.h (incluya Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |