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)

Consulte también

WdfInterruptReportActive