共用方式為


WdfInterruptQueueDpcForIsr 函式 (wdfinterrupt.h)

[適用於 KMDF 和 UMDF]

WdfInterruptQueueDpcForIsr 方法會將架構中斷物件的 EvtInterruptDpc 回呼函式排入佇列,以供執行。

語法

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

參數

[in] Interrupt

架構中斷物件的句柄。

傳回值

如果 WdfInterruptQueueDpcForIsr 成功將中斷物件的 EvtInterruptDpc 回呼函式排入佇列,則會傳回 TRUE。 如果回呼函式先前已排入佇列且尚未執行,則方法會傳回 FALSE

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

驅動程式通常會從 EvtInterruptIsr 回呼函式內呼叫 WdfInterruptQueueDpcForIsr

中斷物件的 EvtInterruptDpc 回呼函式只能在其執行之前排入佇列一次。 因此,如果 呼叫 WdfInterruptQueueDpcForIsr 成功,後續呼叫會傳回 FALSE ,直到架構將 EvtInterruptDpc 回呼函式取消佇列為止。

EvtInterruptDpc 回呼會在加入佇列的處理器上執行。 如果您的驅動程式呼叫 WdfInterruptQueueDpcForIsr 來將另一個 DPC 排入佇列,而 EvtInterruptDpc 回呼函式已經清除佇列或執行,則第二個 EvtInterruptDpc 回呼甚至可能會在第一次完成之前執行。

如需在架構型驅動程式中處理中斷的詳細資訊,請參閱 處理硬體中斷

在 KMDF 1.11 和更新版本中,驅動程式可以從被動層級 ISR 呼叫 WdfInterruptQueueDpcForIsr 。 請注意,驅動程式可以註冊工作專案或 DPC,但不能同時註冊兩者。

範例

下列程式代碼範例示範 EvtInterruptIsr 回調函式應如何將 EvtInterruptDpc 回呼函式排入佇列。

BOOLEAN
MyEvtInterruptIsr(
    IN WDFINTERRUPT Interrupt,
    IN ULONG  MessageID
    )
{
    BOOLEAN queueDpcSuccess;

    //
    // Save interrupt information for the
    // EvtInterruptDpc function.
    //
...
    //
    // Queue the EvtInterruptDpc function.
    //
    queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfinterrupt.h (包含 Wdf.h)
程式庫 Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL <=DIRQL
DDI 合規性規則 DriverCreate (kmdf)

另請參閱

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate