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 回调排队。
驱动程序无法同时将 EvtInterruptDpc 和 EvtInterruptWorkItem 回调排队。
如果驱动程序已在中断的WDF_INTERRUPT_CONFIG结构中将 AutomaticSerialization 成员设置为 TRUE,则框架会将中断对象的 EvtInterruptWorkItem 回调函数的执行与中断父对象下其他对象的回调函数同步。 有关回调同步锁的信息,请参阅 使用框架锁。
通常,如果驱动程序需要从 EvtInterruptWorkItem 中获取中断对象的被动锁,则驱动程序应将 WDF_INTERRUPT_CONFIG 的 AutomaticSerialization 成员设置为 FALSE,然后从 EvtInterruptWorkItem 中调用 WdfInterruptAcquireLock。
如果 AutomaticSerialization 设置为 TRUE,驱动程序的 EvtInterruptWorkItem 回调函数不应调用以下任何方法:
WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable 有关在基于框架的驱动程序中处理中断的详细信息,请参阅 处理硬件中断。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.11 |
最低 UMDF 版本 | 2.0 |
标头 | wdfinterrupt.h (包括 Wdf.h) |
IRQL | PASSIVE_LEVEL |