[適用於 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 回呼函式,您的驅動程式必須先將回呼函式的位址放在 WDF_INTERRUPT_CONFIG 結構中,才能呼叫 WdfInterruptCreate。
大部分的驅動程式都會針對每種中斷類型使用單一 EvtInterruptWorkItem 回呼函式。
若要排程執行 EvtInterruptWorkItem 回呼函式,驅動程式必須從 EvtInterruptIsr 回呼函式內呼叫 WdfInterruptQueueWorkItemForIsr。
如果您的驅動程式為每個裝置建立多個架構中斷物件,您可以考慮針對每個中斷使用不同的 EvtInterruptWorkItem 回呼。
實作 DIRQL 中斷處理或被動層級中斷處理的驅動程式可以將 EvtInterruptWorkItem 排入佇列 回呼。
驅動程式無法將 EvtInterruptDpc 和 EvtInterruptWorkItem 排入佇列 回呼。
如果驅動程式已在中斷 WDF_INTERRUPT_CONFIG 結構中將 AutomaticSerialization 成員設定為 TRUE,則架構會將中斷物件的 EvtInterruptWorkItem 回呼函式與中斷父物件下其他物件的回呼函式同步執行。 如需回呼同步處理鎖定的相關信息,請參閱使用 Framework Locks 。
一般而言,如果驅動程式需要從 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 |