Condividi tramite


Metadati del contenitore del pacchetto driver

I metadati del contenitore del pacchetto driver forniscono OEM e IHV con una soluzione basata su pacchetti driver per personalizzare e migliorare le informazioni relative al dispositivo fisico, così come rappresentato da un contenitore di dispositivi. Il dispositivo fisico può essere una periferica connessa al computer o al computer stesso. L'elenco seguente mostra il tipo di informazioni che i metadati del contenitore del pacchetto driver possono fornire:

  • Nome dell'OEM/IHV.
  • Nome del modello del contenitore del dispositivo.
  • Una o più categorie funzionali supportate dal contenitore di dispositivi.
  • Icona foto realistica che rappresenta il contenitore del dispositivo.

Senza metadati del contenitore, il sistema operativo genera le informazioni nell'elenco precedente esaminando tutti i nodi del dispositivo (devnodes) che appartengono al contenitore di dispositivi, quindi eseguendo euristiche basate sulle informazioni dei devnode. Questo processo potrebbe non comportare i valori desiderati dagli OEM o dagli IHD per la visualizzazione dei propri dispositivi fisici. I metadati del contenitore possono essere usati dagli OEM o dagli IHD per controllare direttamente questi valori.

I metadati del contenitore del pacchetto driver sono supportati a partire da Windows 11 24H2 KB5052093 (Build del sistema operativo 26100.3323). Se il pacchetto driver che include i metadati del contenitore viene installato in un sistema Windows precedente, l'installazione avrà esito positivo, ma i metadati del contenitore non verranno elaborati e applicati.

Uso di INF di base o INF dell'estensione

La direttiva INF AddProperty all'interno del file INF del pacchetto driver specifica i metadati del contenitore del pacchetto driver. Le raccomandazioni per cui usare il file INF per i metadati del contenitore sono:

  1. Se gli OEM/IHV hanno già un pacchetto driver che è l'INF di base per un devnode che fa parte del contenitore del dispositivo, tale pacchetto driver deve essere aggiornato per includere i metadati del contenitore.
  2. Se gli OEM/IHV non hanno un pacchetto driver che è l'INF di base per un devnode che fa parte del contenitore di dispositivi, è consigliabile creare un pacchetto driver INF di estensione. Rispetto a un INF di base, un'estensione INF è il metodo più leggero per includere i metadati del container.

Per altre informazioni sugli INFS di base e sulle funzioni INFS di estensione, vedere Uso di un file INF di estensione.

Per certificare un file INF che specifica i metadati del contenitore, è necessario un infVerif aggiornato, disponibile a partire da Windows Driver Kit, versione 10.0.26100.3323 e Windows HLK 24H2 (aggiornato a gennaio 2025).

Indirizzamento del contenitore di dispositivi

I pacchetti driver sono progettati per singoli nodedev utilizzando informazioni specifiche al dispositivo. Queste informazioni includono ID hardware e ID compatibili. Per fornire i metadati del contenitore al contenitore di dispositivi corretto, il pacchetto driver deve avere come destinazione uno degli elementi devnodes che appartengono al contenitore del dispositivo. Esistono diversi modi per visualizzare tutti i devnodes che appartengono a un device container:

  1. PnPUtil /enum-containers /devices (comando disponibile a partire da Windows 11 versione 24H2)
  2. Gestione dispositivi: Visualizzazione -> Dispositivi per contenitore (opzione Visualizza disponibile a partire da Windows 10 versione 1703)

Per fornire i metadati dei contenitori per il contenitore di computer, è necessario specificare come destinazione un'estensione INF in un nodo di sviluppo speciale denominato dispositivo computer OEM. Il dispositivo computer OEM è disponibile a partire da Windows 11 versione 22H2.

Il dispositivo computer OEM può essere identificato da ID hardware e classe di dispositivo, ad esempio nell'esempio seguente:

  1. Enumerare tutti i devnodes appartenenti alla classe computer.

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. Il dispositivo computer OEM viene visualizzato come segue:

    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 consente solo ai pacchetti driver corrispondenti agli ID esposti dal dispositivo computer OEM di essere file INFS di estensione. Durante la presentazione, è importante specificare il driver Windows di posta in arrivo per il dispositivo nella casella Motivazione aziendale della pagina dell'etichetta di spedizione: ExtendsInboxDriver=compdev.inf. Per altre informazioni sull'invio e la pubblicazione di file INF di estensione, vedere Uso dei file INF di estensione nel Centro per i partner e le regole di destinazione INF dell'estensione.

Esempi

L'esempio seguente mostra come vengono forniti i metadati del contenitore al contenitore di computer specificando come destinazione il dispositivo computer OEM in sistemi modello specifici:

[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'esempio seguente mostra come vengono forniti i metadati del contenitore, inclusa un'associazione di app di supporto di stampa per un contenitore che rappresenta una stampante a più funzioni:

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

Per le transizioni dai pacchetti di metadati del dispositivo, di seguito viene illustrato l'aspetto di un pacchetto di metadati del dispositivo per l'esempio precedente della stampante a più funzioni:

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