Compartir a través de


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 que 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 del marco.

Valor devuelto

Ninguno

Observaciones

Solo los controladores que implementan la llamada de administración de energía de estado funcional WdfInterruptReportInactive.

Cuando un controlador llama a WdfInterruptReportInactive, el marco de administración de energía (PoFx) puede realizar tareas relacionadas de administración de energía.

Normalmente, un controlador llama a WdfInterruptReportInactive desde su rutina de 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 componentIdleStateCall back de 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 Valor
cliente mínimo admitido Windows 8
de la plataforma de destino de Universal
versión mínima de KMDF 1.11
encabezado wdfinterrupt.h (incluya Wdf.h)
Biblioteca 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