警告
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。
架構和UMDF驅動程式會透過UMDF DDI進行通訊。 UMDF DDI 類似於 KMDF DDI,不同之處在於 UMDF DDI 是以 COM 為基礎。 因此,熟悉 KMDF 的驅動程式寫入器將會瞭解 UMDF。
針對每種框架物件類型,UMDF 定義了一個介面,透過該介面可以操作物件實例。 每個介面都支援方法和屬性。 方法定義可以代表物件採取的動作,而屬性用來設定和擷取物件的特性。 某些介面是由架構實作,而其他介面則由驅動程序實作。 由架構對象公開的介面是 IWDF<物件>的形式,而驅動程式所公開的事件回呼介面的格式為 I<物件><動作>,其中 <物件> 代表佇列、要求等等,<動作> 會指出介面的作用。 回呼介面的方法會以 「On」 開頭。
UMDF 驅動程式會透過其方法和屬性與架構的物件通訊。 架構會透過事件通知與驅動程序通訊,這是架構可以呼叫的回呼函式,以通知驅動程式有關特定事件。 若要註冊回呼函式,驅動程式可以呼叫下列架構物件方法,並將指標傳遞至與驅動程式所支援之回呼函式所有介面相關聯的 IUnknown 介面。
作為驅動程式到架構通訊的範例,請考慮裝置的預設 I/O 佇列物件。 驅動程式可以呼叫方法,例如 IWDFIoQueue::GetState、擷取 I/O 佇列的狀態資訊,或 IWDFIoQueue::RetrieveNextRequest 從 I/O 佇列擷取要求。 驅動程式也可以呼叫 I/O 佇列上的通知,方法是呼叫 IWDFDevice::CreateIoQueue 方法來註冊回呼介面,例如 IQueueCallbackRead 和 IQueueCallbackWrite。 應用程式傳送讀取和寫入要求時,架構後續會呼叫這些介面的方法。
架構提供驅動程式回呼方法之間所需的任何同步處理。 根據預設,架構會在裝置物件層級同步處理;也就是說,架構不會在裝置物件層級或以下同時呼叫事件回呼方法。 驅動程式可以藉由要求不進行同步來覆寫此預設值。 如需詳細資訊,請參閱 指定回呼同步處理模式。