WdfInterruptReportInactive 函数 (wdfinterrupt.h)

[仅适用于 KMDF]

WdfInterruptReportInactive 方法通知系统中断不再处于活动状态,并且驱动程序不希望在关联的行上发出中断请求。

语法

void WdfInterruptReportInactive(
  [in] WDFINTERRUPT Interrupt
);

参数

[in] Interrupt

框架中断对象的句柄。

返回值

备注

只有实现功能状态电源管理的驱动程序才会调用 WdfInterruptReportInactive

当驱动程序调用 WdfInterruptReportInactive 时,电源管理框架 (PoFx) 随后可以执行相关的电源管理任务。

通常,驱动程序从其 ComponentIdleConditionCallback 例程调用 WdfInterruptReportInactive,或者在 State 大于零时从 ComponentIdleStateCallback 调用 WdfInterruptReportInactive, (指示低功率 Fx 状态) 。

如果驱动程序在早于 Windows 8 的操作系统上调用此方法,则框架的验证程序会报告错误。

示例

以下示例演示驱动程序如何从 KMDF 驱动程序的 ComponentIdleStateCallback 例程调用 WdfInterruptReportInactive。 驱动程序通过调用 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;

    …

}

要求

要求
最低受支持的客户端 Windows 8
目标平台 通用
最低 KMDF 版本 1.11
标头 wdfinterrupt.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库 Versioning.)
IRQL <=DISPATCH_LEVEL
DDI 符合性规则 DriverCreate (kmdf)

另请参阅

WdfInterruptReportActive