Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метаданные контейнера пакета драйверов предоставляют OEM и IHV решение на основе пакета драйвера для настройки и улучшения информации о физическом устройстве, представленной контейнером устройства. Физическое устройство может быть периферийным устройством, подключенным к компьютеру или самому компьютеру. В следующем списке показан тип сведений, которые могут предоставлять метаданные контейнера пакета драйверов:
- Имя OEM/IHV.
- Имя модели контейнера устройства.
- Одна или несколько функциональных категорий, поддерживаемых контейнером устройства.
- Фотореалистичный значок, представляющий контейнер устройства.
Без метаданных контейнера операционная система создает сведения в предыдущем списке, просматривая все узлы устройств (devnodes), принадлежащие контейнеру устройства, а затем выполняя эвристики на основе сведений о devnodes. Этот процесс может не привести к значениям, требуемым изготовителям оборудования или IHV для отображения физических устройств. Метаданные контейнера можно использовать изготовителем оборудования или IHV для непосредственного управления этими значениями.
Метаданные контейнера пакета драйверов поддерживаются начиная с Windows 11 24H2 KB5052093 (сборка ОС 26100.3323). Если пакет драйвера, включающий метаданные контейнера, установлен в более старой системе Windows, установка будет успешно выполнена, но метаданные контейнера не будут обработаны и применены.
Использование базового INF-файла или INF расширения
Директива INF AddProperty в INF-файле пакета драйвера указывает метаданные контейнера пакета драйвера. Наши рекомендации по использованию INF-файла для метаданных контейнера:
- Если у изготовителей оборудования или IHV уже есть пакет драйвера, который является базовым INF-файлом для devnode, который является частью контейнера устройства, необходимо обновить пакет драйвера, чтобы включить метаданные контейнера.
- Если у производителей оригинального оборудования (OEM) или независимых поставщиков аппаратного обеспечения (IHV) нет пакета драйверов, являющегося базовым файлом INF для devnode, который входит в состав контейнера устройства, рекомендуется создать INF-пакет драйвера расширения. По сравнению с базовым INF расширение INF является более легким способом включения метаданных контейнера.
Дополнительные сведения о основных INF-файлах и INF-файлах расширения см. в разделе Использование INF-файла расширения.
Чтобы сертифицировать INF-файл, указывающий метаданные контейнера, требуется обновленный InfVerif, который доступен начиная с комплекта драйверов Windows версии 10.0.26100.3323 и Windows HLK 24H2 (обновлено за январь 2025 г.).
Ориентирование контейнера устройств
Пакеты драйверов нацелены на отдельные «devnodes», используя информацию, относящуюся к устройству. Эти сведения включают идентификаторы оборудования и совместимые идентификаторы. Чтобы предоставить метаданные контейнера соответствующему контейнеру устройства, пакет драйвера должен ориентироваться на один из "devnodes", принадлежащих контейнеру устройства. Существует несколько способов просмотра всех devnodes, принадлежащих контейнеру устройств:
- PnPUtil /enum-containers /devices (команда доступна начиная с Windows 11 версии 24H2)
- Диспетчер устройств: просмотр -> Устройства по контейнерам (параметр просмотра доступен, начиная с версии 1703 Windows 10)
Чтобы предоставить метаданные контейнера для контейнера компьютера, необходимо нацелить расширение INF на специальное devnode, называемое устройством компьютера OEM. Устройство компьютера OEM доступно начиная с версии Windows 11 22H2.
Устройство компьютера OEM можно определить по классам устройств и аппаратным идентификаторам, таким как в следующем примере:
Перечислите все devnodes, принадлежащие классу Computer:
PnPUtil /enum-devices /class Computer /deviceidsУстройство компьютера OEM отображается следующим образом:
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 позволяет использовать в качестве расширений INF только пакеты драйверов, которые соответствуют идентификаторам, предоставляемым компьютерным устройством OEM. Во время отправки важно указать встроенный Windows-драйвер для устройства в поле "Бизнес-обоснование" на странице метки доставки: ExtendsInboxDriver=compdev.inf. Дополнительные сведения о отправке и публикации расширений INFs см. в статье "Работа с INF-файлами расширения" в Центре партнеров и правилах для расширения INF.
Примеры
В следующем примере показано, как метаданные контейнера передаются контейнеру компьютера, нацелив устройство OEM на определенные системы моделей:
[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 = "自定义制造商"
В следующем примере показано, как метаданные контейнера, включая ассоциацию приложения поддержки печати, предоставляются для контейнера, представляющего многофункциональный принтер.
[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"
Для тех, кто переходит на пакеты метаданных устройства, показано, как может выглядеть пакет метаданных устройства на примере многофункционального принтера, приведенном выше:
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>