WUDF_INTERRUPT_ISR回呼函式 (wudfinterrupt.h)
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用UMDF使用者入門。
驅動程式的 OnInterruptIsr 事件回呼函式服務硬體中斷。
語法
typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
參數
[in] Interrupt
IWDFInterrupt 介面的指標。
[in] MessageID
如果裝置使用訊息訊號中斷 (MSI) ,則此參數是識別裝置硬體中斷訊息的訊息編號。 否則,此值為 0。
[in] Reserved
保留供系統使用。
傳回值
無
備註
如果驅動程式認可中斷的擁有權,並已停止並認可其裝置上的中斷,則會傳回 TRUE。 否則會傳回 FALSE。
若要註冊 OnInterruptIsr 回呼函式,您的驅動程式必須在呼叫 IWDFDevice3::CreateInterrupt 之前,將回呼函式的位址放在WUDF_INTERRUPT_CONFIG結構中。
OnInterruptIsr 回呼函式是 UMDF 驅動程式的中斷服務例程 (ISR) ,會在硬體中斷發生時於PASSIVE_LEVEL呼叫。
針對邊緣觸發的中斷或訊息訊號中斷 (MSI) ,架構會在操作系統中斷分派內容之外呼叫 OnInterruptIsr 。 這是因為 UMDF 只允許非共用邊緣觸發或 MSI 中斷,而且驅動程式不需要與此內容中的硬體互動。
針對層級觸發的中斷,架構會在操作系統中斷分派的內容中呼叫 OnInterruptIsr 。 因此,操作系統的中斷分派線程會在內核模式中封鎖,等候驅動程序的回應。
一般而言, OnInterruptIsr 會儲存任何可能遺失並清除硬體中斷的變動性資訊。 針對層級觸發的中斷,驅動程式應該停止並確認裝置上的中斷,如果它擁有中斷,則傳回 TRUE。 驅動程式應在 OnInterruptWorkItem 回呼中執行任何進一步處理。 若要將工作專案排入佇列,驅動程式會呼叫 IWDFInterrupt::QueueWorkItemForIsr 方法。
如需在 UMDF 驅動程式中處理中斷的詳細資訊,請參閱 存取硬體和處理中斷。
範例
函式類型會在 Wudfinterrupt.h 中宣告,如下所示。
typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
若要定義名為 MyInterruptIsr 的 OnInterruptIsr 回呼函式,您必須先提供 SDV 和其他驗證工具所需的函式宣告,如下所示:
WUDF_INTERRUPT_NOTIFY MyInterruptIsr;
然後,實作您的回呼函式,如下所示:
BOOLEAN
MyInterruptIsr (
IN IWDFInterrupt* Interrupt,
IN ULONG MessageID,
IN ULONG Reserved
)
{…}
規格需求
需求 | 值 |
---|---|
終止支援 | UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.11 |
標頭 | wudfinterrupt.h |