Partager via


Métadonnées du conteneur de package de pilotes

Les métadonnées de conteneur de package de pilotes fournissent aux OEM et aux IHV une solution basée sur un package de pilotes pour personnaliser et améliorer les informations accessibles par l’utilisateur sur leur appareil physique, tel que représenté par un conteneur d’appareils. L’appareil physique peut être un périphérique connecté à l’ordinateur ou à l’ordinateur lui-même. La liste ci-dessous indique le type d’informations que les métadonnées du conteneur de pilotes de paquet peuvent fournir :

  • Nom de l’OEM/IHV.
  • Nom du modèle du conteneur d’appareil.
  • Une ou plusieurs catégories fonctionnelles prises en charge par le conteneur d’appareil.
  • Icône photo réaliste qui représente le conteneur d’appareils.

Sans métadonnées de conteneur, le système d’exploitation génère les informations de la liste précédente en examinant tous les nœuds d’appareil (devnodes) appartenant au conteneur d’appareil, puis en exécutant des heuristiques basées sur les informations des devnodes. Ce processus peut ne pas entraîner les valeurs souhaitées par les oem ou les IHD pour l’affichage de leurs appareils physiques. Les métadonnées de conteneur peuvent être utilisées par les oem ou les IHD pour contrôler directement ces valeurs.

Les métadonnées du conteneur de package de pilotes sont prises en charge à partir de Windows 11 24H2 KB5052093 (build du système d’exploitation 26100.3323). Si le package de pilotes qui inclut les métadonnées du conteneur est installé sur un système Windows plus ancien, l’installation réussit, mais les métadonnées du conteneur ne seront pas traitées et appliquées.

Utilisation d’INF de base ou d’un INF d’extension

La directive INF AddProperty dans le fichier INF du package de pilotes spécifie les métadonnées du conteneur du package de pilotes. Nos recommandations concernant le fichier INF à utiliser pour les métadonnées de conteneur sont les suivantes :

  1. Si les oem/IHD disposent déjà d’un package de pilotes qui est l’INF de base pour un devnode qui fait partie du conteneur d’appareils, ce package de pilotes doit être mis à jour pour inclure les métadonnées du conteneur.
  2. Si les OEM/IHV ne disposent pas d'un package de pilotes qui sert d'INF de base pour un devnode faisant partie du conteneur d'appareils, la création d'un package de pilotes INF d'extension est recommandée. Par rapport à un INF de base, une extension INF est le moyen plus léger d’inclure les métadonnées du conteneur.

Pour plus d’informations sur les inf de base et les infs d’extension, consultez Utilisation d’un fichier INF d’extension.

Pour certifier un fichier INF qui spécifie les métadonnées du conteneur, un InfVerif mis à jour est requis, qui est disponible à partir du Kit de pilotes Windows, version 10.0.26100.3323 et Windows HLK 24H2 (mis à jour en janvier 2025).

Ciblage de conteneur d’appareils

Les packages de pilotes sont ciblés sur des devnodes individuels à l’aide d’informations spécifiques à l’appareil. Ces informations incluent des ID matériels et des ID compatibles. Pour fournir des métadonnées de conteneur au conteneur d’appareil approprié, le package de pilotes doit cibler l’un des devnodes qui appartiennent au conteneur d’appareil. Il existe plusieurs façons d’afficher tous les devnodes appartenant à un conteneur d’appareils :

  1. PnPUtil /enum-containers /devices (Commande disponible à partir de Windows 11, version 24H2)
  2. Gestionnaire d’appareils : Affichage -> Appareils par conteneur (option d’affichage disponible à partir de Windows 10, version 1703)

Pour fournir des métadonnées de conteneur pour le conteneur d’ordinateur, vous devez cibler une extension INF sur un devnode spécial appelé périphérique d’ordinateur OEM. L’appareil d’ordinateur OEM est disponible à partir de Windows 11, version 22H2.

L’appareil d’ordinateur OEM peut être identifié par la classe d’appareil et les ID matériels tels que dans l’exemple suivant :

  1. Énumérez tous les devnodes appartenant à la classe Computer :

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. L’appareil d’ordinateur OEM s’affiche comme suit :

    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}
        ...
    

Le Centre de développement matériel Windows autorise uniquement les packages de pilotes correspondant aux ID exposés par l’ordinateur OEM à être des INFs d’extension. Lors de l’envoi, il est important de spécifier le pilote Windows de la boîte de réception pour l’appareil dans la zone Justification métier de la page d’étiquette d’expédition : ExtendsInboxDriver=compdev.inf. Pour plus d’informations sur l’envoi et la publication des fichiers INF d’extension, consultez Utilisation des fichiers INF d’extension dans l’espace partenaires et Règles de ciblage pour les extensions INF.

Exemples

L’exemple suivant montre comment les métadonnées de conteneur sont fournies au conteneur d’ordinateur en ciblant l’appareil ordinateur OEM sur des systèmes de modèles spécifiques :

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

L’exemple suivant montre comment les métadonnées de conteneur, y compris une association d’application de support d’impression, sont fournies pour un conteneur qui représente une imprimante multi-fonction :

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

Pour ceux qui effectuent la transition à partir de packages de métadonnées de périphérique, voici à quoi un package de métadonnées de périphérique peut se présenter dans l'exemple susmentionné de l'imprimante multifonction :

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