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 结构中。

每次设备进入其工作 (D0) 状态时,框架都会调用驱动程序的 EvtInterruptEnable 回调函数。 此外,驱动程序可能导致框架通过调用 WdfInterruptEnable 调用 EvtInterruptEnable 回调函数。 请注意,大多数基于框架的驱动程序不应调用 WdfInterruptEnable,因为每次设备进入其工作 (D0) 状态时,框架都会调用驱动程序的 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