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;

若要定義名為MyInterruptIsrOnInterruptIsr回呼函式,您必須先提供 SDV 和其他驗證工具所需的函式宣告,如下所示:

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

然後,實作回呼函式,如下所示:

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

規格需求

   
結束支援 在 UMDF 2.0 和更新版本中無法使用。
目標平臺 桌面
最低 UMDF 版本 1.11
標頭 wudfinterrupt.h

另請參閱