查詢 Windows 顯示驅動程序模型 (WDDM) 功能的支持和啟用。 其中介紹了:
用戶模式和內核模式顯示驅動程序(UMD 和 KMD)如何查詢 OS,以確定 WDDM 功能在系統上是否受支持和已啟用。
OS 如何確定驅動程序是否支持特定的 WDDM 功能。
從 Windows 11 版本 24H2 (WDDM 3.2) 開始引入此功能查詢機制。
WDDM 功能概述
可以將 WDDM 視為功能集合,其中一項功能是涵蓋某些功能的 WDDM API/DDI 的集合。
功能由功能 ID 標識,它由類別 ID 和類別中功能本身的子 ID 組成。
OS 已知的每個功能都有關聯的狀態信息,用于確定該功能在系統上是否受支持和/或已啟用。 某些功能可以是驅動程序功能。 驅動程序功能需要啟用驅動程序的某個級別的支持。 Dxgkrnl 提供握手機制來確定功能配置。 注冊表項可以基于每個功能、每個適配器覆蓋功能配置。
驅動程序功能還可以具有一個功能接口,該接口提供與該功能相關的驅動程序 DDI。 通過支持單個功能接口,我們不再需要依賴更新 OS 和 KMD 之間的主接口,后者以前只能使用更新的 WDDM 版本控制更改進行擴展。 此方法提供了一種更靈活的方式,用于向以前的 OS 或通過 Windows Moment 版本向后移植功能,而無需定義特殊支持。
每個功能都可以包含一個依賴項列表,作為先決條件,這些依賴項也必須受支持。 需要此類依賴項的未來功能將在其文檔中指示其所需的依賴項。
功能會進行版本控制,并且每個受支持的版本均可以具有不同的接口或配置。
WDDM 引入了一組 API 來用于查詢特定功能狀態。 API 包括:
DXGK_FEATURE_INTERFACE:在調用 DxgkDdiStartDevice 后,KMD 可以查詢并使用此接口來確定特定功能在系統中是否受支持和已啟用。
此機制取代了以下現有 DDI:
DxgkCbIsFeatureEnabled
DxgkCbQueryFeatureSupport
DXGKDDI_FEATURE_INTERFACE:此機制允許 OS 從 KMD 查詢功能接口。
DxgkIsFeatureEnabled2此函數是系統提供的 displib 庫中的入口點。
KMD 可以從其 DriverEntry 例程調用 DxgkIsFeatureEnabled2,而無需初始化 Dxgkrnl 來確定系統是否啟用了特定功能。
D3DKMTIsFeatureEnabled:此用戶模式 API 允許用戶模式模塊確定是否啟用了特定功能。
加載顯示微型端口驅動程序時,WDDM 端口驅動程序會查詢所有依賴于驅動程序支持的功能。
驅動程序可以在加載時查詢 WDDM 端口驅動程序,以便獲取受支持的功能。