EVT_WDF_INTERRUPT_WORKITEM回调函数 (wdfinterrupt.h)

[适用于 KMDF 和 UMDF]

驱动程序的 EvtInterruptWorkItem 事件回调函数处理驱动程序的 EvtInterruptIsr 回调函数存储的中断信息。

语法

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

参数

[in] Interrupt

框架中断对象的句柄。

[in] AssociatedObject

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

返回值

备注

EvtInterruptWorkItem 回调函数在 IRQL = PASSIVE_LEVEL 运行。

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

大多数驱动程序对每种中断类型使用单个 EvtInterruptWorkItem 回调函数。

若要计划执行 EvtInterruptWorkItem 回调函数,驱动程序必须从 EvtInterruptIsr 回调函数中调用 WdfInterruptQueueWorkItemForIsr

如果驱动程序为每个设备创建多个框架中断对象,则可以考虑为每个中断使用单独的 EvtInterruptWorkItem 回调。

实现 DIRQL 中断处理或被动级别中断处理的驱动程序可以将 EvtInterruptWorkItem 回调排队。

驱动程序不能同时将 EvtInterruptDpcEvtInterruptWorkItem 回调排队。

如果驱动程序在中断的WDF_INTERRUPT_CONFIG结构中将 AutomaticSerialization 成员设置为 TRUE,则框架会将中断对象的 EvtInterruptWorkItem 回调函数的执行与来自中断的父对象下的其他对象的回调函数同步。 有关回调同步锁的信息,请参阅 使用框架锁

通常,如果驱动程序需要从 EvtInterruptWorkItem 中获取中断对象的被动锁,则驱动程序应将 WDF_INTERRUPT_CONFIGAutomaticSerialization 成员设置为 FALSE,然后从 EvtInterruptWorkItem 中调用 WdfInterruptAcquireLock

如果 AutomaticSerialization 设置为 TRUE,驱动程序的 EvtInterruptWorkItem 回调函数不应调用以下任何方法:

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

要求

要求
目标平台 通用
最低 KMDF 版本 1.11
最低 UMDF 版本 2.0
标头 wdfinterrupt.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL