驅動程式套件容器元數據為 OEM 和 IHV 提供基於驅動程式套件的解決方案,以便自定義和增強其實體裝置的使用者面向資訊,讓裝置容器能夠更好地代表這些資訊。 實體裝置可以是連接到電腦或計算機本身的外圍設備。 下列清單顯示驅動程式套件容器元資料可以提供的資訊類型:
- OEM/IHV 的名稱。
- 裝置容器的模型名稱。
- 裝置容器支援的一或多個功能類別。
- 代表裝置容器的相片逼真圖示。
如果沒有容器元數據,作業系統會藉由查看屬於裝置容器的所有 裝置節點 (devnodes),然後根據 devnodes 的資訊執行啟發式方法,以生成先前清單中的資訊。 此過程可能無法產生 OEM 或獨立硬體供應商希望用於顯示其實體裝置的值。 OEM 或 IHD 可以使用容器元數據直接控制這些值。
從 Windows 11 24H2 KB5052093 開始支援驅動程式套件容器元數據(OS 組建 26100.3323)。 如果包含容器元數據的驅動程式套件安裝在舊版 Windows 系統上,安裝將會成功,但不會處理容器元數據並套用。
使用基底 INF 或擴充功能 INF
驅動程式套件 INF 檔案內的 INF AddProperty 指示詞會指定驅動程式套件容器元數據。 我們針對容器元數據使用的 INF 檔案建議如下:
- 如果 OEM/IHV 已經有屬於裝置容器之 devnode 基底 INF 的驅動程式套件,則應更新該驅動程式套件以包含容器元數據。
- 如果 OEM/IHV 沒有提供某個屬於裝置容器的 devnode 的基底 INF 驅動程式套件,建議建立擴充 INF 驅動程式套件。 相較於基底 INF,擴充 INF 是包含容器元數據的較輕量方式。
如需基底 INF 和擴充功能 INF 的詳細資訊,請參閱 使用擴充功能 INF 檔案。
若要認證指定容器元數據的 INF 檔案,需要更新的 InfVerif,從 Windows Driver Kit 版本 10.0.26100.3323 和 Windows HLK 24H2 開始提供更新的 InfVerif(2025 年 1 月更新)。
裝置容器目標
驅動程式套件是以裝置特定資訊為依據,針對個別裝置節點進行定位。 此資訊包括 硬體 識別碼和 相容的標識碼。 若要將容器元數據提供給正確的裝置容器,驅動程式套件必須以屬於裝置容器的其中一個 devnode 為目標。 有數種方式可檢視屬於裝置容器的所有 devnode:
- PnPUtil /enum-containers /devices (從 Windows 11 版本 24H2 開始可用的命令)
- 裝置管理員:檢視 -> 按容器查看裝置(從 Windows 10 版本 1703 開始可用的檢視選項)
若要提供計算機容器的容器元數據,您必須在稱為 OEM 計算機裝置的特殊 devnode 上,以擴充功能 INF 為目標。 OEM 電腦裝置可從 Windows 11 版本 22H2 開始使用。
OEM 電腦裝置可以透過裝置類別和硬體識別碼來識別,例如下列範例:
列舉屬於 Computer 類別的所有 devnode:
PnPUtil /enum-devices /class Computer /deviceidsOEM 電腦裝置如下所示:
Instance ID: SWD\COMPUTER\... Status: Started Driver Name: compdev.inf Hardware IDs: COMPUTER\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} COMPUTER\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} COMPUTER\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} COMPUTER\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} ...
Windows 硬體開發人員中心只允許 OEM 電腦裝置 公開的標識碼上相符的驅動程式套件成為擴充 INF。 在提交期間,請務必在出貨卷標頁面的 [商務理由] 方塊中指定 Windows 裝置的收件匣驅動程式: ExtendsInboxDriver=compdev.inf。 如需提交和發佈擴充功能 INF 的詳細資訊,請參閱合作夥伴中心和延伸模組 INF 目標規則中的擴充功能 INF 檔案。
範例
下列範例示範如何將容器元數據提供給計算機容器,方法是以特定模型系統上的 OEM 計算機裝置為目標:
[Standard.NTamd64]
%Device.ExtensionDesc% = DeviceInstall, Computer\{417c41d7-1d11-5b78-ab26-00b745dfac94}
%Device.ExtensionDesc% = DeviceInstall, Computer\{70127e8f-991f-505a-b966-fc08b6f74f94}
%Device.ExtensionDesc% = DeviceInstall, Computer\{ff26d547-8d7f-5069-bbcb-0c50756b691a}
%Device.ExtensionDesc% = DeviceInstall, Computer\{770bbdbb-bbf5-5d39-ae1a-25f41b7bbcfd}
[DeviceInstall]
AddProperty = ComputerMetadata_Properties
[ComputerMetadata_Properties]
ContainerModelName,,,, %ModelName%
ContainerManufacturer,,,, %Manufacturer%
ContainerCategories,,,, Computer.Tablet
ContainerIcon,,,, %13%\CustomComputer.ico
[Strings]
Device.ExtensionDesc = "Custom Computer Metadata Extension"
ModelName = "Custom Computer"
Manufacturer = "Custom Manufacturer"
; en-us
[Strings.0409]
Device.ExtensionDesc = "Custom Computer Metadata Extension"
ModelName = "Custom Computer"
Manufacturer = "Custom Manufacturer"
; zh-cn
[Strings.0804]
Device.ExtensionDesc = "自定义电脑元数据拓展"
ModelName = "自定义电脑型号"
Manufacturer = "自定义制造商"
下列範例示範容器元數據,包括 列印支援應用程式關聯 如何提供給代表多功能印表機的容器:
[Standard.NTamd64]
%Device.ExtensionDesc% = DeviceInstall, MF\CustomPrinter&WSD&IP_PRINT
%Device.ExtensionDesc% = DeviceInstall, WSDPRINT\CustomPrinter
%Device.ExtensionDesc% = DeviceInstall, USBPRINT\CustomPrinter
%Device.ExtensionDesc% = DeviceInstall, CustomPrinter
[DeviceInstall]
AddProperty = Container_Metadata_Properties
AddProperty = PSA_Association_Property
[Container_Metadata_Properties]
ContainerModelName,,,, %ModelName%
ContainerManufacturer,,,, %Manufacturer%
ContainerCategories,,,, PrintFax.Printer, Imaging.Scanner
ContainerIcon,,,, %13%\CustomPrinter.ico
[PSA_Association_Property]
{A925764B-88E0-426D-AFC5-B39768BE59EB}, 1, 0x12,, CustomPrinterAUMID
[DeviceInstall.Software]
AddSoftware = Printer Control App,, Print_SoftwareInstall
[Print_SoftwareInstall]
SoftwareType = 2
SoftwareID = pfn://CustomPrinterControlAppId
[Strings]
Device.ExtensionDesc = "Container Property Extension"
ModelName = "Custom Printer"
Manufacturer = "Custom Manufacturer"
對於從 裝置元數據套件轉換的人,以下顯示的是多功能印表機的裝置元數據套件可能範例:
PackageInfo.xml
<?xml version="1.0" encoding="utf-8"?> <PackageInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/"> <MetadataKey> <HardwareIDList> <HardwareID>DOID:MF\CustomPrinter&WSD&IP_PRINT</HardwareID> <HardwareID>DOID:WSDPRINT\CustomPrinter</HardwareID> <HardwareID>DOID:USBPRINT\CustomPrinter</HardwareID> <HardwareID>DOID:CustomPrinter</HardwareID> </HardwareIDList> <Locale default="true">en-US</Locale> <LastModifiedDate>2014-04-08T07:19:14Z</LastModifiedDate> </MetadataKey> ... </PackageInfo>DeviceInfo.xml
<?xml version="1.0" encoding="utf-8"?> <DeviceInfo xmlns="http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/"> <DeviceCategoryList> <DeviceCategory>PrintFax.Printer</DeviceCategory> <DeviceCategory>Imaging.Scanner</DeviceCategory> </DeviceCategoryList> <ModelName>Custom Printer</ModelName> <Manufacturer>Custom Manufacturer</Manufacturer> <DeviceIconFile>CustomPrinter.ico</DeviceIconFile> </DeviceInfo>SoftwareInfo.xml
<?xml version="1.0" encoding="utf-8"?> <SoftwareInfo xmlns="http://schemas.microsoft.com/windows/2010/08/DeviceMetadata/SoftwareInfo"> <DeviceCompanionApplications> <Package> <Identity Name="CustomPrinterControlAppName" Publisher="CustomPrinterControlAppPublisher" /> ... </Package> </DeviceCompanionApplications> ... </SoftwareInfo>