WdfInterruptReportInactive method

[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(
  [in]  WDFINTERRUPT Interrupt
);

Parameters

Interrupt [in]

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 support

Windows 8

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

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft