Bagikan melalui


Metadata Kontainer Paket Driver

Metadata kontainer paket driver menyediakan OEM dan IHV dengan solusi berbasis paket driver untuk menyesuaikan dan meningkatkan informasi yang menghadap pengguna tentang perangkat fisik mereka seperti yang diwakili oleh kontainer perangkat. Perangkat fisik dapat menjadi periferal yang terhubung ke komputer atau komputer itu sendiri. Daftar berikut menunjukkan jenis informasi yang dapat disediakan metadata kontainer paket driver:

  • Nama OEM/IHV.
  • Nama model kontainer perangkat.
  • Satu atau beberapa kategori fungsi yang didukung kontainer perangkat.
  • Ikon foto-realistis yang mewakili kontainer perangkat.

Tanpa metadata kontainer, sistem operasi menghasilkan informasi dalam daftar sebelumnya dengan melihat semua simpul perangkat (devnode) yang termasuk dalam kontainer perangkat, lalu menjalankan heuristik berdasarkan informasi devnode. Proses ini mungkin tidak menghasilkan nilai yang diinginkan oleh OEM atau IHV untuk tampilan perangkat fisik mereka. Metadata kontainer dapat digunakan oleh OEM atau IHV untuk mengontrol nilai-nilai ini secara langsung.

Metadata kontainer paket driver didukung mulai di Windows 11 24H2 KB5052093 (OS Build 26100.3323). Jika paket driver yang menyertakan metadata kontainer diinstal pada sistem Windows yang lebih lama, penginstalan akan berhasil tetapi metadata kontainer tidak akan diproses dan diterapkan.

Menggunakan INF Dasar atau INF Ekstensi

Direktif INF AddProperty dalam file INF paket driver menentukan metadata kontainer paket driver. Rekomendasi kami untuk file INF mana yang akan digunakan untuk metadata kontainer adalah:

  1. Jika OEM/IHV sudah memiliki paket driver yang merupakan INF dasar untuk devnode yang merupakan bagian dari kontainer perangkat, paket driver tersebut harus diperbarui untuk menyertakan metadata kontainer.
  2. Jika OEM/IHV tidak memiliki paket driver yang merupakan INF dasar untuk devnode yang merupakan bagian dari kontainer perangkat, disarankan untuk membuat paket driver INF ekstensi. Dibandingkan dengan INF dasar, INF ekstensi adalah cara berat yang lebih ringan untuk menyertakan metadata kontainer.

Untuk informasi selengkapnya tentang INF dasar dan INF ekstensi, lihat Menggunakan File INF Ekstensi.

Untuk mensertifikasi file INF yang menentukan metadata kontainer, InfVerif yang diperbarui diperlukan, yang tersedia mulai dari Windows Driver Kit, Versi 10.0.26100.3323 dan Windows HLK 24H2 (diperbarui Januari 2025).

Penargetan Kontainer Perangkat

Paket driver ditargetkan pada devnode individual menggunakan informasi khusus perangkat. Informasi ini mencakup ID perangkat keras dan ID yang kompatibel. Untuk menyediakan metadata kontainer ke kontainer perangkat yang benar, paket driver harus menargetkan salah satu devnode yang termasuk dalam kontainer perangkat. Ada beberapa cara untuk melihat semua devnode yang termasuk dalam kontainer perangkat:

  1. PnPUtil /enum-containers /devices (Perintah tersedia mulai Windows 11, versi 24H2)
  2. Manajer Perangkat: Lihat -> Perangkat menurut kontainer (Opsi tampilan tersedia mulai dari Windows 10, versi 1703)

Untuk menyediakan metadata kontainer untuk kontainer komputer, Anda harus menargetkan INF ekstensi pada devnode khusus yang disebut perangkat komputer OEM. Perangkat komputer OEM tersedia mulai dari Windows 11, versi 22H2.

Perangkat komputer OEM dapat diidentifikasi oleh kelas perangkat dan ID perangkat keras seperti dalam contoh berikut:

  1. Mendaftar semua devnode yang tergolong dalam kelas Komputer:

    PnPUtil /enum-devices /class Computer /deviceids
    
  2. Perangkat komputer OEM muncul sebagai berikut:

    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 hanya memungkinkan paket driver yang cocok pada ID yang diekspos oleh perangkat komputer OEM untuk menjadi INF ekstensi. Selama pengiriman, penting untuk menentukan driver Windows kotak masuk untuk perangkat dalam kotak Justifikasi Bisnis dari halaman label pengiriman: ExtendsInboxDriver=compdev.inf. Untuk informasi selengkapnya tentang mengirimkan dan menerbitkan INF ekstensi, lihat Bekerja dengan file INF ekstensi di Pusat Mitra dan aturan penargetan INF Ekstensi.

Contoh

Contoh berikut menunjukkan bagaimana metadata kontainer disediakan ke kontainer komputer dengan menargetkan perangkat komputer OEM pada sistem model tertentu:

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

Contoh berikut menunjukkan bagaimana metadata kontainer, termasuk asosiasi Aplikasi Dukungan Cetak disediakan untuk kontainer yang mewakili printer multifungsi:

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

Untuk mereka yang beralih dari Paket Metadata Perangkat, berikut ini menunjukkan seperti apa Paket Metadata Perangkat untuk contoh di atas printer multifungsi.

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