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

另請參閱