Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os metadados do contêiner do pacote de driver fornecem aos OEMs e IHVs uma solução baseada em pacote de driver para personalizar e aprimorar as informações voltadas para o 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 o tipo de informações que os metadados do contentor do pacote de driver podem disponibilizar:
- O nome do OEM/IHV.
- O nome do modelo do contêiner do dispositivo.
- Uma ou mais categorias funcionais suportadas pelo contêiner do dispositivo.
- Um ícone fotorrealista 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 de dispositivo e, em seguida, executando heurísticas com base nas informações dos devnodes. Este processo pode não resultar nos valores desejados pelos OEMs ou IHVs para a exibição de seus dispositivos físicos. Os metadados do contêiner podem ser usados pelos OEMs ou IHVs para controlar diretamente esses valores.
Os metadados do contentor do pacote de driver são suportados a partir do Windows 11 24H2 KB5052093 (compilação do sistema operativo 26100.3323). Se o pacote de driver que inclui os metadados do contêiner estiver instalado em um sistema Windows mais antigo, a instalação será bem-sucedida, mas os metadados do contêiner não serão processados e aplicados.
Usando Base INF ou Extensão INF
A diretiva INF AddProperty dentro do arquivo INF do pacote de driver especifica os metadados do contêiner do pacote de driver. Nossas recomendações para qual arquivo INF usar para metadados de contêiner são:
- Se os OEMs/IHVs já tiverem um pacote de driver que seja o INF base para um devnode que faz parte do contêiner de dispositivo, esse pacote de driver deverá ser atualizado para incluir os metadados do contêiner.
- Se os OEMs/IHVs não tiverem um pacote de driver que seja o INF base para um devnode que faz parte do contentor de dispositivo, é recomendável criar um pacote de driver INF adicional. Em comparação com um INF de base, uma extensão INF é a maneira mais leve de incluir os metadados do contêiner.
Para obter mais informações sobre INFs de base e INFs de extensão, consulte Usando um arquivo INF de extensão.
Para certificar um arquivo INF que especifica os metadados do 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).
Segmentação de Contentor de Dispositivo
Os pacotes de driver são direcionados a devnodes individuais usando 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 alvo um dos devnodes que pertencem ao contêiner de dispositivo. Há várias maneiras de exibir todos os devnodes que pertencem a um contêiner de dispositivo:
- PnPUtil /enum-containers /devices (Comando disponível a partir do Windows 11, versão 24H2)
- Gerenciador de dispositivos: Exibir -> 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 classe de dispositivo e IDs de hardware, como no exemplo a seguir:
Enumere todos os devnodes pertencentes à classe Computer:
PnPUtil /enum-devices /class Computer /deviceidsO dispositivo de computador OEM aparece da seguinte forma:
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 apenas permite que pacotes de drivers que correspondem aos IDs associados ao dispositivo de computador OEM sejam utilizados como INFs de extensão. No momento do envio, é importante especificar o driver interno do Windows para o dispositivo na caixa Justificação Comercial da página da etiqueta de envio: ExtendsInboxDriver=compdev.inf. Para obter mais informações sobre como enviar e publicar INFs de extensão, consulte Trabalhar com arquivos INF de extensão no Partner Center e as regras de segmentação para INF de extensão.
Exemplos
O exemplo a seguir mostra como os metadados do contêiner são fornecidos ao computador ao direcionar o dispositivo OEM do computador em modelos de sistemas 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 do contêiner, incluindo uma associação do Aplicativo de Suporte de Impressão , são fornecidos para um contêiner que representa uma impressora multifuncional:
[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 estão fazendo a transição de Pacotes de Metadados de Dispositivo, o seguinte mostra como um Pacote de Metadados de Dispositivo pode parecer para o exemplo acima da impressora multifuncional:
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>