共用方式為


驅動程式套件容器元數據

驅動程式套件容器元數據為 OEM 和 IHV 提供基於驅動程式套件的解決方案,以便自定義和增強其實體裝置的使用者面向資訊,讓裝置容器能夠更好地代表這些資訊。 實體裝置可以是連接到電腦或計算機本身的外圍設備。 下列清單顯示驅動程式套件容器元資料可以提供的資訊類型:

  • OEM/IHV 的名稱。
  • 裝置容器的模型名稱。
  • 裝置容器支援的一或多個功能類別。
  • 代表裝置容器的相片逼真圖示。

如果沒有容器元數據,作業系統會藉由查看屬於裝置容器的所有 裝置節點 (devnodes),然後根據 devnodes 的資訊執行啟發式方法,以生成先前清單中的資訊。 此過程可能無法產生 OEM 或獨立硬體供應商希望用於顯示其實體裝置的值。 OEM 或 IHD 可以使用容器元數據直接控制這些值。

從 Windows 11 24H2 KB5052093 開始支援驅動程式套件容器元數據(OS 組建 26100.3323)。 如果包含容器元數據的驅動程式套件安裝在舊版 Windows 系統上,安裝將會成功,但不會處理容器元數據並套用。

使用基底 INF 或擴充功能 INF

驅動程式套件 INF 檔案內的 INF AddProperty 指示詞會指定驅動程式套件容器元數據。 我們針對容器元數據使用的 INF 檔案建議如下:

  1. 如果 OEM/IHV 已經有屬於裝置容器之 devnode 基底 INF 的驅動程式套件,則應更新該驅動程式套件以包含容器元數據。
  2. 如果 OEM/IHV 沒有提供某個屬於裝置容器的 devnode 的基底 INF 驅動程式套件,建議建立擴充 INF 驅動程式套件。 相較於基底 INF,擴充 INF 是包含容器元數據的較輕量方式。

如需基底 INF 和擴充功能 INF 的詳細資訊,請參閱 使用擴充功能 INF 檔案

若要認證指定容器元數據的 INF 檔案,需要更新的 InfVerif,從 Windows Driver Kit 版本 10.0.26100.3323Windows HLK 24H2 開始提供更新的 InfVerif(2025 年 1 月更新)。

裝置容器目標

驅動程式套件是以裝置特定資訊為依據,針對個別裝置節點進行定位。 此資訊包括 硬體 識別碼和 相容的標識碼。 若要將容器元數據提供給正確的裝置容器,驅動程式套件必須以屬於裝置容器的其中一個 devnode 為目標。 有數種方式可檢視屬於裝置容器的所有 devnode:

  1. PnPUtil /enum-containers /devices (從 Windows 11 版本 24H2 開始可用的命令)
  2. 裝置管理員:檢視 -> 按容器查看裝置(從 Windows 10 版本 1703 開始可用的檢視選項)

若要提供計算機容器的容器元數據,您必須在稱為 OEM 計算機裝置的特殊 devnode 上,以擴充功能 INF 為目標。 OEM 電腦裝置可從 Windows 11 版本 22H2 開始使用。

OEM 電腦裝置可以透過裝置類別和硬體識別碼來識別,例如下列範例:

  1. 列舉屬於 Computer 類別的所有 devnode:

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. OEM 電腦裝置如下所示:

    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>