EVT_WDF_INTERRUPT_ENABLE回调函数 (wdfinterrupt.h)

[适用于 KMDF 和 UMDF]

驱动程序的 EvtInterruptEnable 事件回调函数启用指定的硬件中断。

语法

EVT_WDF_INTERRUPT_ENABLE EvtWdfInterruptEnable;

NTSTATUS EvtWdfInterruptEnable(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFDEVICE AssociatedDevice
)
{...}

参数

[in] Interrupt

框架中断对象的句柄。

[in] AssociatedDevice

驱动程序传递给 WdfInterruptCreate的框架设备对象的句柄。

返回值

EvtInterruptEnable 回调函数必须返回STATUS_SUCCESS或其他状态值(NT_SUCCESS状态)等于 TRUE(如果函数遇到错误)。 否则,此函数必须返回一个状态值,NT_SUCCESS(状态)等于 FALSE

注解

若要注册 EvtInterruptEnable 回调函数,驱动程序必须在调用 WdfInterruptCreate之前将回调函数的地址置于 WDF_INTERRUPT_CONFIG 结构中。

每当设备进入其工作状态时,框架都会调用驱动程序的 EvtInterruptEnable 回调函数。 此外,驱动程序还可能导致框架通过调用 WdfInterruptEnable调用 EvtInterruptEnable 回调函数。 请注意,大多数基于框架的驱动程序不应调用 WdfInterruptEnable,因为每次设备进入其工作状态时,框架都会调用驱动程序的 EvtInterruptEnable 回调函数。

在调用 EvtInterruptEnable 回调函数之前,框架会将处理器的 IRQL 提升到设备的 DIRQL,并获取中断对象 WDF_INTERRUPT_CONFIG 结构中指定的驱动程序指定的旋转锁。

从 KMDF 版本 1.11 开始,驱动程序可以提供 被动级中断处理。 如果驱动程序已请求被动级中断处理,则在调用 IRQL = PASSIVE_LEVEL EvtInterruptEnable 函数之前,框架将获取驱动程序在中断对象的 WDF_INTERRUPT_CONFIG 结构中配置的被动级中断锁。

EvtInterruptEnable 回调函数返回后,框架会在 IRQL = PASSIVE_LEVEL 调用驱动程序的 EvtDeviceD0EntryPostInterruptsEnabled 事件回调函数。

你不得假定每次框架调用驱动程序的 EvtInterruptEnable 回调函数时,设备都将使用相同的中断资源。 有时,PnP 管理器 重新分发系统资源,并且可能会向设备分配新的中断资源。 驱动程序可以调用 WdfInterruptGetInfo 来确定设备的中断资源。

有关在基于框架的驱动程序中处理中断的详细信息,请参阅 处理硬件中断

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfinterrupt.h (包括 Wdf.h)
IRQL (请参阅“备注”部分。

另请参阅

EvtDeviceD0EntryPostInterruptsEnabled

EvtInterruptDisable

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptEnable

WdfInterruptGetInfo