WdfInterruptReportInactive function

[Applies to KMDF only]

The WdfInterruptReportInactive method informs the system that the interrupt is no longer active and the driver is not expecting interrupt requests on the associated lines.

Syntax

void WdfInterruptReportInactive(
  WDFINTERRUPT Interrupt
);

Parameters

Interrupt

A handle to a framework interrupt object.

Return Value

This method does not return a value.

Remarks

Only drivers that implement functional state power management call WdfInterruptReportInactive.

When a driver calls WdfInterruptReportInactive, the power management framework (PoFx) can then perform related power management tasks.

Typically, a driver calls WdfInterruptReportInactive from either its ComponentIdleConditionCallback routine, or from ComponentIdleStateCallback when State is greater than zero (indicating a low-power Fx state).

If your driver calls this method on an operating system earlier than Windows 8, the framework's verifier reports an error.

Examples

The following example shows how a driver might call WdfInterruptReportInactive from the ComponentIdleStateCallback routine of a KMDF driver. The driver registers a single component by calling 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;

…

}

Requirements

   
Minimum supported client Windows 8
Target Platform Universal
Minimum KMDF version 1.11
Header wdfinterrupt.h (include Wdf.h)
Library Wdf01000.sys (see Framework Library Versioning.)
IRQL <=DISPATCH_LEVEL
DDI compliance rules DriverCreate

See Also

WdfInterruptReportActive