Bagikan melalui


Menggabungkan ekstensi platform dengan versi sistem operasi

Dalam bagian Produsen INF dari file INF, Anda dapat menyediakan bagian Model INF yang khusus untuk berbagai versi sistem operasi Windows. Bagian Model khusus versi ini diidentifikasi dengan menggunakan dekorasi TargetOSVersion .

Dalam file INF yang sama, bagian Model INF yang berbeda dapat ditentukan untuk versi sistem operasi yang berbeda. Versi yang ditentukan menunjukkan versi sistem operasi target tempat bagian Model INF akan digunakan. Jika tidak ada versi yang ditentukan, Windows menggunakan bagian Model tanpa dekorasi TargetOSVersion untuk semua versi semua sistem operasi.

Format dekorasi TargetOSVersion

Contoh berikut menunjukkan format dekorasi TargetOSVersion yang benar untuk Windows XP melalui Windows 10, versi 1511:

nt[Architecture][.[OSMajorVersion] Itu dia.[OSMinorVersion] Itu dia.[ProductType] Itu dia.[SuiteMask]]]]]

Dimulai dengan Windows 10, versi 1607 (Build 14310 dan yang lebih baru), format dekorasi TargetOSVersion yang benar mencakup BuildNumber:

nt[Architecture][.[OSMajorVersion] Itu dia.[OSMinorVersion] Itu dia.[ProductType] Itu dia.[SuiteMask]] Itu dia.[BuildNumber]]]]]

Setiap bidang didefinisikan sebagai berikut:

Nt
Menentukan bahwa sistem operasi target berbasis NT. Windows 2000 dan versi Windows yang lebih baru semuanya berbasis NT.

Arsitektur
Mengidentifikasi platform perangkat keras. Untuk informasi selengkapnya tentang dekorasi platform arsitektur pada bagian Model , lihat Membuat File INF untuk Beberapa Platform dan Sistem Operasi.

OSMajorVersion
Angka yang mewakili nomor versi utama untuk sistem operasi. Untuk tabel yang mencantumkan versi utama untuk sistem operasi Windows, lihat OSMajorVersion di bagian Produsen INF.

OSMinorVersion
Angka yang mewakili nomor versi minor untuk sistem operasi. Untuk tabel yang mencantumkan versi minor untuk sistem operasi Windows, lihat OSMinorVersion di bagian Produsen INF.

ProductType
Angka yang mewakili salah satu bendera VER_NT_xxxx yang ditentukan dalam Winnt.h, seperti berikut ini:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Jika jenis produk ditentukan, file INF hanya akan digunakan jika sistem operasi cocok dengan jenis produk yang ditentukan. Jika file INF mendukung beberapa jenis produk untuk satu versi sistem operasi, diperlukan beberapa entri TargetOSVersion .

SuiteMask
Angka yang mewakili kombinasi satu atau beberapa bendera VER_SUITE_xxxxx yang ditentukan dalam Winnt.h. Bendera-bendera ini meliputi:

0x00000001 (VER_SUITE_SMALLBUSINESS)

0x00000002 (VER_SUITE_ENTERPRISE)

0x00000004 (VER_SUITE_BACKOFFICE)

0x00000008 (VER_SUITE_COMMUNICATIONS)

0x00000010 (VER_SUITE_TERMINAL)

0x00000020 (VER_SUITE_SMALLBUSINESS_RESTRICTED)

0x00000040 (VER_SUITE_EMBEDDEDNT)

0x00000080 (VER_SUITE_DATACENTER)

0x00000100 (VER_SUITE_SINGLEUSERTS)

0x00000200 (VER_SUITE_PERSONAL)

0x00000400 (VER_SUITE_SERVERAPPLIANCE)

Jika satu atau beberapa nilai masker suite ditentukan, file INF hanya akan digunakan jika sistem operasi cocok dengan semua rangkaian produk yang ditentukan. Jika file INF mendukung beberapa kombinasi rangkaian produk untuk satu versi sistem operasi, diperlukan beberapa entri TargetOSVersion .

BuildNumber
Menentukan nomor build OS minimum dari rilis Windows 10 yang diterapkan bagian, dimulai dengan build 14310 atau yang lebih baru. Untuk tabel yang mencantumkan nomor build untuk sistem operasi Windows, lihat BuildNumber di bagian Produsen INF.

Nomor build diasumsikan relatif terhadap beberapa versi utama/minor OS tertentu saja, dan mungkin diatur ulang untuk beberapa versi utama/minor OS di masa mendatang.

Nomor build apa pun yang ditentukan oleh dekorasi TargetOSVersion dievaluasi hanya ketika versi utama/minor OS dari TargetOSVersion sama persis dengan versi OS (atau AltPlatformInfo) saat ini.  Jika versi OS saat ini lebih besar dari versi OS yang ditentukan oleh dekorasi TargetOSVersion (OSMajorVersion,OSMinorVersion), bagian tersebut dianggap berlaku terlepas dari nomor build yang ditentukan. Demikian juga, jika versi OS saat ini kurang dari versi OS yang ditentukan oleh dekorasi TargetOSVersion, bagian tersebut tidak berlaku.

Jika nomor build disediakan, versi OS dan BuildNumber dari dekorasi TargetOSVersion harus lebih besar dari versi OS dan nomor build Windows 10 build 14310 tempat dekorasi ini pertama kali diperkenalkan. Versi sistem operasi sebelumnya tanpa perubahan ini (misalnya, Windows 10 build 10240) tidak akan mengurai dekorasi yang tidak diketahui, sehingga upaya untuk menargetkan build sebelumnya ini benar-benar akan mencegah OS mempertimbangkan dekorasi yang valid sama sekali.

Cara Windows memproses dekorasi TargetOSVersion

Ketika Anda menginstal paket driver pada perangkat, Windows mengikuti langkah-langkah ini untuk memproses bagian Model INF dalam file INF:

  1. Jika satu atau beberapa bagian Model INF memiliki dekorasi TargetOS , Windows memilih bagian Model INF yang paling dekat dengan atribut untuk sistem operasi host.

    Misalnya, jika bagian Model INF memiliki dekorasi TargetOSntx86.5.1, Windows memilih bagian tersebut jika sistem operasi host menjalankan Windows XP atau versi Windows yang lebih baru pada sistem berbasis x86.

    Demikian pula, jika bagian Model INF memiliki dekorasi TargetOSnt.6.0, Windows memilih bagian tersebut jika sistem operasi host adalah Windows Vista atau versi Windows yang lebih baru pada platform perangkat keras yang didukung.

    Jika bagian Model INF memiliki dekorasi TargetOSnt.10.0... 14393, Windows memilih bagian tersebut jika sistem operasi host menjalankan Windows 10 build yang sama dengan atau lebih besar dari 14393 pada platform perangkat keras yang didukung.

  2. Jika tidak ada bagian Model INF yang memiliki dekorasi TargetOS yang cocok dengan sistem operasi host, Windows memilih bagian Model yang memiliki ekstensi platform yang cocok atau tidak ada ekstensi platform.

    Misalnya, jika bagian Model INF memiliki ekstensi platform ntx86, Windows memilih bagian tersebut jika sistem operasi host adalah Windows versi Microsoft Windows 2000 atau yang lebih baru pada sistem berbasis x86.

  3. Jika Windows tidak dapat menemukan bagian Model INF yang cocok, maka tidak akan menginstal paket pengandar tersebut pada perangkat.

Bagaimana dekorasi TargetOsVersion diselesaikan

Saat menentukan bagian Model INF yang berlaku, evaluasi dilakukan per baris dalam bagian Produsen INF, di mana, untuk versi OS tertentu, setiap baris mungkin memiliki hingga satu bagian yang berlaku.

Kutipan INF di bawah ini menunjukkan contoh di mana [ExampleModelsSection_1.NTamd64.10.0... 17134] akan dipilih pada nomor build Windows yang sama dengan atau lebih besar dari 17134 , dan keduanya [ExampleModelsSection_1.NTamd64.10.0... 17134] dan [ExampleModelsSection_2.NTamd64.10.0... 22000] akan dipilih pada nomor build Windows yang sama dengan atau lebih besar dari 22000.

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134
%ManufacturerName% = ExampleModelsSection_2,NTamd64.10.0...22000

Kutipan INF di bawah ini menunjukkan contoh di mana [ExampleModelsSection_1.NTamd64.10.0... 17134] akan dipilih pada nomor build Windows yang sama dengan atau lebih besar dari 17134, dan [ExampleModelsSection_1.NTamd64.10.0... 22000] akan dipilih pada nomor build Windows yang sama dengan atau lebih besar dari 22000.

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134,NTamd64.10.0...22000

Bagian Model INF sampel dengan dekorasi TargetOSVersion

Terapkan ke versi OS tertentu dan yang lebih baru

Kutipan INF ini menunjukkan bagaimana Anda dapat menentukan bahwa paket driver hanya berlaku untuk versi OS tertentu dan yang lebih baru.

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134

; This driver package applies to Windows 10 1803 (build 17134) and later only

[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId

[ExampleInstallSection]
...

Terapkan hanya ke satu versi OS

Kutipan INF ini menunjukkan bagaimana Anda dapat menentukan bahwa paket driver hanya berlaku untuk satu versi OS.

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134,NTamd64.10.0...17763

; This driver package applies to Windows 10 1803 (build 17134)

[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId

; However, this driver package does nothing on Windows 10 1809 (build 17763) and later
[ExampleModelsSection.NTamd64.10.0...17763]
; intentionally left empty

[ExampleInstallSection]
...

Terapkan ke beberapa versi OS dengan pengaturan yang berbeda

Kutipan INF ini menunjukkan bagaimana Anda dapat menentukan bahwa paket driver harus melalui instruksi penginstalan yang berbeda untuk versi OS yang berbeda.

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.6.1,NTamd64.10.0

; This driver package applies to Windows 7 and later

[ExampleModelsSection.NTamd64.6.1]
%DeviceDesc%=ExampleInstallSection_Win7,ExampleHardwareId

; However, this driver package has different installation instructions on Windows 10 and later

[ExampleModelsSection.NTamd64.10.0]
%DeviceDesc%=ExampleInstallSection_Win10,ExampleHardwareId

[ExampleInstallSection_Win7]
...

[ExampleInstallSection_Win10]
...