Freigeben über


Metadaten des Treiberpaket-Containers

Treiberpaketcontainermetadaten bieten den OEMs und IHVs eine treiberpaketbasierte Lösung, um Benutzerinformationen über deren physische Geräte anzupassen und zu verbessern, wie durch einen Gerätecontainer dargestellt. Das physische Gerät kann ein Peripheriegerät sein, das mit dem Computer oder dem Computer selbst verbunden ist. Die folgende Liste zeigt die Art der Informationen, die Metadaten des Treiberpaketcontainers bereitstellen können:

  • Der Name des OEM/IHV.
  • Der Modellname des Gerätecontainers.
  • Mindestens eine Funktionskategorie, die der Gerätecontainer unterstützt.
  • Ein fotorealistisches Symbol, das den Gerätecontainer darstellt.

Ohne Containermetadaten generiert das Betriebssystem die Informationen in der vorherigen Liste, indem alle Geräteknoten (Devnodes) betrachtet werden, die zum Gerätecontainer gehören, und anschließend Heuristiken basierend auf den Informationen der Devnodes ausführen. Dieser Vorgang kann nicht zu den werten führen, die von den OEMs oder IHVs für die Anzeige ihrer physischen Geräte gewünscht werden. Containermetadaten können von den OEMs oder IHVs verwendet werden, um diese Werte direkt zu steuern.

Treiberpaketcontainermetadaten werden ab Windows 11 24H2 KB5052093 (Betriebssystembuild 26100.3323) unterstützt. Wenn das Treiberpaket, das die Containermetadaten enthält, auf einem älteren Windows-System installiert ist, ist die Installation erfolgreich, die Containermetadaten werden jedoch nicht verarbeitet und angewendet.

Verwenden von Basis-INF oder Erweiterungs-INF

Die INF-AddProperty-Direktive innerhalb der INF-Datei des Treiberpakets gibt die Metadaten des Treiberpaketcontainers an. Unsere Empfehlungen für die INF-Datei, die für Containermetadaten verwendet werden soll, sind:

  1. Wenn OEMs/IHVs bereits über ein Treiberpaket verfügen, das die Basis-INF für einen Devnode ist, der Teil des Gerätecontainers ist, sollte dieses Treiberpaket aktualisiert werden, um die Containermetadaten einzuschließen.
  2. Wenn OEMs/IHVs kein Treiberpaket besitzen, das die Basis-INF für einen Devnode ist, der Teil des Gerätecontainers ist, wird das Erstellen eines Erweiterungs-INF-Treiberpakets empfohlen. Im Vergleich zu einer Basis-INF ist eine Erweiterungs-INF die leichtere Möglichkeit, die Containermetadaten einzuschließen.

Weitere Informationen zu Basis-INFs und Erweiterungs-INFs finden Sie unter Verwenden einer INF-Erweiterungsdatei.

Um eine INF-Datei zu zertifizieren, die die Containermetadaten angibt, ist ein aktualisiertes InfVerif erforderlich, das ab Windows Driver Kit, Version 10.0.26100.3323 und Windows HLK 24H2 (aktualisiert Januar 2025) verfügbar ist.

Gerätecontaineradressierung

Treiberpakete werden auf einzelne Devnodes mit gerätespezifischen Informationen ausgerichtet. Diese Informationen umfassen Hardware-IDs und kompatible IDs. Um Containermetadaten für den richtigen Gerätecontainer anzugeben, muss das Treiberpaket auf einen der Devnodes abzielen, die zum Gerätecontainer gehören. Es gibt mehrere Möglichkeiten, alle Devnodes anzuzeigen, die zu einem Gerätecontainer gehören:

  1. PnPUtil /enum-containers /devices (Kommando ab Windows 11, Version 24H2 verfügbar)
  2. Geräte-Manager: Anzeigen –> Geräte nach Container (Ansichtsoption ab Windows 10, Version 1703)

Um Containermetadaten für den Computercontainer anzugeben, müssen Sie eine Erweiterungs-INF für einen speziellen Devnode namens OEM-Computergerät konfigurieren. Das OEM-Computergerät ist ab Windows 11, Version 22H2, verfügbar.

Das OEM-Computergerät kann durch Geräteklassen- und Hardware-IDs wie im folgenden Beispiel identifiziert werden:

  1. Aufzählen aller Devnodes, die zur Computerklasse gehören:

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. Das OEM-Computergerät wird wie folgt angezeigt:

    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 Hardware Dev Center erlaubt nur Treiberpakete, die auf IDs abgestimmt sind, die vom OEM-Gerät als Erweiterungs-INFs verfügbar gemacht werden. Während der Übermittlung ist es wichtig, den Windows-Posteingangstreiber für das Gerät im Feld "Geschäftliche Begründung" der Versandetikettsseite anzugeben: ExtendsInboxDriver=compdev.inf Weitere Informationen zum Übermitteln und Veröffentlichen von Erweiterungs-INFs finden Sie unter Arbeiten mit INF-Dateien der Erweiterung im Partner Center und INF-Zielregeln für Erweiterungen.

Beispiele

Das folgende Beispiel zeigt, wie Containermetadaten für den Computercontainer bereitgestellt werden, indem sie auf das OEM-Computergerät auf bestimmten Modellsystemen abzielen:

[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 = "自定义制造商"

Das folgende Beispiel zeigt, wie Containermetadaten, einschließlich einer Print Support App-Zuordnung , für einen Container bereitgestellt werden, der einen Multifunktionsdrucker darstellt:

[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"

Für diejenigen, die von Gerätemetadatenpaketen wechseln, zeigt Folgendes, wie ein Gerätemetadatenpaket für das obige Beispiel des Multifunktionsdruckers aussehen kann:

  • 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>