Compartilhar via


Metadados de contêiner do pacote de driver

Os metadados de contêiner do pacote de driver proporcionam a OEMs e IHVs uma solução baseada em pacote de driver para personalizar e aprimorar informações direcionadas ao usuário sobre seu dispositivo físico, conforme representado por um contêiner de dispositivo. O dispositivo físico pode ser um periférico conectado ao computador ou ao próprio computador. A lista a seguir mostra os tipos de informações que os metadados de contêineres de pacotes de drivers podem fornecer:

  • O nome do OEM/IHV.
  • O nome do modelo do contêiner do dispositivo.
  • Uma ou mais categorias funcionais compatíveis com o contêiner do dispositivo.
  • Um ícone foto-realista que representa o contêiner do dispositivo.

Sem metadados de contêiner, o sistema operacional gera as informações na lista anterior examinando todos os nós de dispositivo (devnodes) que pertencem ao contêiner do dispositivo e executando heurística com base nas informações dos devnodes. Esse processo pode não resultar nos valores desejados pelos OEMs ou IHVs para a exibição de seus dispositivos físicos. Os metadados de contêiner podem ser usados pelos OEMs ou IHVs para controlar diretamente esses valores.

Os metadados de contêiner do pacote de driver são suportados a partir de Windows 11 24H2 KB5052093 (Build 26100.3323 do sistema operacional). Se o pacote de driver que inclui os metadados de contêiner estiver instalado em um sistema Windows mais antigo, a instalação será bem-sucedida, mas os metadados de contêiner não serão processados e aplicados.

Usando o INF base ou o INF de extensão

A diretiva INF AddProperty no arquivo INF do pacote de driver especifica os metadados do contêiner do pacote de driver. Nossas recomendações para as quais o arquivo INF deve ser usado para metadados de contêiner são:

  1. Se os OEMs/IHVs já tiverem um pacote de driver que seja o INF base para um devnode que faz parte do contêiner do dispositivo, esse pacote de driver deverá ser atualizado para incluir os metadados do contêiner.
  2. Se os OEMs/IHVs não tiverem um pacote de driver que seja o INF base para um devnode que faz parte do contêiner do dispositivo, é recomendável criar um pacote de driver INF de extensão. Em comparação com um INF base, uma extensão INF é a maneira mais leve de incluir os metadados do contêiner.

Para obter mais informações sobre INFs base e INFs de extensão, consulte Usando um arquivo INF de extensão.

Para certificar um arquivo INF que especifica os metadados de contêiner, é necessário um InfVerif atualizado, que está disponível a partir do Windows Driver Kit, versão 10.0.26100.3323 e windows HLK 24H2 (atualizado em janeiro de 2025).

Direcionamento de dispositivos por contêiner

Os pacotes de driver são direcionados para devnodes individuais por meio de informações específicas do dispositivo. Essas informações incluem IDs de hardware e IDs compatíveis. Para fornecer metadados de contêiner para o contêiner de dispositivo correto, o pacote de driver deve ter como destino um dos devnodes que pertencem ao contêiner do dispositivo. Há várias maneiras de exibir todos os devnodes que pertencem a um contêiner de dispositivo:

  1. PnPUtil /enum-containers /devices (Comando disponível a partir do Windows 11, versão 24H2)
  2. Gerenciador de Dispositivos: Exibição –> Dispositivos por contêiner (opção Exibir disponível a partir do Windows 10, versão 1703)

Para fornecer metadados de contêiner para o contêiner do computador, você deve direcionar uma extensão INF para um devnode especial chamado dispositivo de computador OEM. O dispositivo de computador OEM está disponível a partir do Windows 11, versão 22H2.

O dispositivo de computador OEM pode ser identificado por IDs de hardware e classe de dispositivo, como no exemplo a seguir:

  1. Enumerar todos os devnodes pertencentes à classe Computador:

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. O dispositivo de computador OEM aparece da seguinte maneira:

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

O Centro de Desenvolvimento de Hardware do Windows só permite que pacotes de driver correspondentes aos IDs expostos pelo dispositivo de computador OEM sejam INFs de extensão. Durante o envio, é importante especificar o driver nativo do Windows para o dispositivo na seção Justificativa Comercial da página de etiqueta de envio: ExtendsInboxDriver=compdev.inf. Para obter mais informações sobre como enviar e publicar INFs de extensão, consulte Trabalhando com arquivos INF de extensão no Partner Center e Regras de direcionamento do INF de extensão.

Exemplos

O exemplo a seguir mostra como os metadados de contêiner são fornecidos para o contêiner do computador direcionando o dispositivo de computador OEM em sistemas de modelo específicos:

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

O exemplo a seguir mostra como os metadados de contêiner, incluindo uma associação de Aplicativo de Suporte à Impressão , são fornecidos para um contêiner que representa uma impressora de várias funções:

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

Para aqueles que fazem a transição de pacotes de metadados de dispositivo, o seguinte mostra como um pacote de metadados de dispositivo pode ser semelhante ao exemplo acima da impressora de várias funções:

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