Udostępnij przez


Metadane kontenera pakietu sterowników

Metadane kontenera pakietów sterowników zapewniają OEM i IHV rozwiązanie oparte na pakiecie sterowników, aby dostosować i ulepszyć informacje prezentowane użytkownikom o ich urządzeniach fizycznych, reprezentowanych przez kontener urządzenia. Urządzenie fizyczne może być urządzeniem peryferyjnym podłączonym do komputera lub samego komputera. Na poniższej liście przedstawiono typ informacji, które mogą dostarczyć metadane kontenera pakietów sterowników:

  • Nazwa producenta OEM/IHV.
  • Nazwa modelu kontenera urządzenia.
  • Co najmniej jedna kategoria funkcjonalna obsługiwana przez kontener urządzenia.
  • Realistyczna ikona przedstawiająca kontener urządzenia.

Bez metadanych kontenera, system operacyjny generuje informacje z poprzedniej listy, analizując wszystkie węzły urządzenia (devnodes) należące do kontenera urządzenia, a następnie stosując heurystyki na podstawie informacji z devnodes. Ten proces może nie przynieść wartości oczekiwanych przez producentów OEM lub IHV w kontekście wyświetlania ich urządzeń fizycznych. Metadane kontenera mogą być używane przez producentów OEM lub IHV do bezpośredniej kontroli tych wartości.

Metadane kontenera pakietów sterowników są obsługiwane od wersji KB5052093 (kompilacja systemu operacyjnego 26100.3323) w systemie Windows 11 24H2. Jeśli pakiet sterowników zawierający metadane kontenera jest zainstalowany w starszym systemie Windows, instalacja zakończy się pomyślnie, ale metadane kontenera nie zostaną przetworzone i zastosowane.

Korzystanie z bazowego INF lub rozszerzenia INF

Dyrektywa INF AddProperty w pliku INF pakietu sterowników określa metadane kontenera pakietów sterowników. Nasze zalecenia dotyczące pliku INF do użycia dla metadanych kontenera to:

  1. Jeśli OEM/IHV mają już pakiet sterowników, który jest podstawowym sterownikiem INF dla urządzenia wchodzącego w skład kontenera urządzeń, ten pakiet powinien zostać zaktualizowany, aby uwzględniać metadane kontenera.
  2. Jeśli OEM/IHV nie mają pakietu sterowników, który jest podstawowym elementem INF dla devnode będącego częścią kontenera urządzeń, zaleca się utworzenie pakietu sterownika rozszerzenia INF. W porównaniu z podstawowym elementem INF rozszerzenie INF jest lżejszym sposobem dołączania metadanych kontenera.

Aby uzyskać więcej informacji na temat podstawowych plików INF i plików rozszerzeń INF, zobacz Korzystanie z pliku INF rozszerzenia.

Aby certyfikować plik INF, który określa metadane kontenera, wymagany jest zaktualizowany element InfVerif, który jest dostępny począwszy od zestawu Sterowników Systemu Windows w wersji 10.0.26100.3323 i Windows HLK 24H2 (zaktualizowano styczeń 2025 r.).

Określanie wartości docelowej kontenera urządzenia

Pakiety sterowników są przeznaczone dla poszczególnych węzłów urządzeń, przy użyciu informacji specyficznych dla urządzenia. Te informacje obejmują identyfikatory sprzętu i zgodne identyfikatory. Aby dostarczyć metadane kontenera do odpowiedniego kontenera urządzeń, pakiet sterowników musi być przeznaczony dla jednego z węzłów devnode należących do kontenera urządzeń. Istnieje kilka sposobów na wyświetlenie wszystkich węzłów devnode przypisanych do kontenera urządzenia.

  1. PnPUtil /enum-containers /devices (Polecenie dostępne od systemu Windows 11, wersja 24H2)
  2. Menedżer urządzeń: Wyświetlanie —> urządzenia według kontenera (opcja Wyświetl dostępną od systemu Windows 10 w wersji 1703)

Aby podać metadane kontenera dla kontenera komputera, należy nakierować rozszerzenie INF na specjalny węzeł deweloperski o nazwie urządzenie komputera OEM. Urządzenie komputerowe OEM jest dostępne od systemu Windows 11 w wersji 22H2.

Urządzenie komputera OEM można zidentyfikować za pomocą identyfikatorów klasy urządzeń i sprzętu, takich jak w poniższym przykładzie:

  1. Wylicz wszystkie devnode'y należące do klasy Komputer.

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. Urządzenie komputera OEM jest wyświetlane w następujący sposób:

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

Centrum deweloperów sprzętu Windows zezwala tylko na pakiety sterowników dopasowujące się do identyfikatorów uwidocznionych przez urządzenie komputera OEM, aby były plikami INF rozszerzenia. Podczas przesyłania należy wskazać wbudowany sterownik Windows dla urządzenia w polu Uzasadnienie biznesowe na stronie etykiety wysyłkowej: ExtendsInboxDriver=compdev.inf. Aby uzyskać więcej informacji na temat przesyłania i publikowania rozszerzeń INF, zobacz Praca z plikami INF rozszerzeń w Centrum partnerskim i reguły określania wartości docelowych rozszerzenia INF.

Przykłady

W poniższym przykładzie pokazano, w jaki sposób metadane kontenera są dostarczane do kontenera komputera przez skierowanie urządzenia komputera OEM do określonych systemów modeli:

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

W poniższym przykładzie pokazano, w jaki sposób dostarczane są metadane kontenera, w tym skojarzenie aplikacji do obsługi wydruku, dla kontenera reprezentującego drukarkę wielofunkcyjną:

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

W przypadku osób przechodzących z pakietów metadanych urządzenia poniżej pokazano, jak może wyglądać pakiet metadanych urządzenia w powyższym przykładzie drukarki wielofunkcyjnej:

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