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)

Consulte también

WdfInterruptReportInactive