共用方式為


維護插斷 (UMDF 1)

警告

UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 撰寫。 未將新功能新增至 UMDF 1,且較新版本的WINDOWS 10上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。

封存的 UMDF 1 範例可在Windows 11 22H2 - 2022 年 5 月驅動程式範例更新中找到。

如需詳細資訊,請參閱使用 UMDF 消費者入門

維護中斷包含兩個步驟:

  1. 將動態資訊儲存 (,例如在插斷服務常式中快速註冊內容) 。
  2. 處理工作專案常式中儲存的動態資訊。

當裝置產生硬體中斷時,架構會呼叫驅動程式的插斷服務常式 (ISR) ,此架構型驅動程式會實作為 OnInterruptIsr 回呼函式。

在PASSIVE_LEVEL執行的 OnInterruptIsr 回呼函式必須快速儲存中斷資訊,例如註冊內容、將工作專案排入佇列以進一步處理資料,並從 ISR 傳回,以便在共用中斷線時允許維護其他中斷。 由於 UMDF 驅動程式的 ISR 會在PASSIVE_LEVEL執行,因此不建議處理 PCI 行型中斷。 這些中斷通常會在多個裝置之間共用,其中有些可能不接受 ISR 延遲。 不過,您可以在 UMDF 驅動程式中處理 PCI MSI 中斷。 這些中斷具有邊緣語意,而且不會共用。

一般而言, OnInterruptIsr 回呼函式會排程工作專案,稍後處理儲存的資訊。 架構型驅動程式會將 workitem 常式實作為 OnInterruptWorkItem 回 呼函式。

大部分的驅動程式都會針對每種中斷類型使用單一 OnInterruptWorkItem 回呼函式。 若要排程OnInterruptWorkItem回呼函式的執行,驅動程式必須從OnInterruptIsr回呼函式內呼叫IWDFInterrupt::QueueWorkItemForIsr

如果您的驅動程式為每個裝置建立多個架構佇列物件,您可以考慮針對每個佇列使用不同的 workitem 物件和 OnWorkItem 回呼函式。 若要排程 OnWorkItem 回呼函式的執行,驅動程式必須先呼叫 IWdfDevice3::CreateWorkItem來建立一或多個 workitem 物件,通常是從驅動程式的 IDriverEntry::OnDeviceAdd 回呼函式。 然後驅動程式的 OnInterruptIsr 回呼函式可以呼叫 IWDFWorkItem::Enqueue

驅動程式通常會在其 OnInterruptWorkItemOnWorkItem 回呼函式中完成 I/O 要求。

如需處理中斷的 UMDF 驅動程式範例,請參閱SpbAccelerometer範例驅動程式,可從 Windows 8 WDK 開始取得。