Platformextensies combineren met besturingssysteemversies

In de sectie INF Manufacturer van een INF-bestand kunt u secties INF-modellen opgeven die specifiek zijn voor verschillende versies van het Windows besturingssysteem. Deze versiespecifieke Models-secties worden geïdentificeerd met behulp van de TargetOSVersion-decoratie.

Binnen hetzelfde INF-bestand kunnen verschillende INF Models-secties worden opgegeven voor verschillende versies van het besturingssysteem. De opgegeven versies geven de doelversies van het besturingssysteem aan waarmee de secties Models worden gebruikt. Als er geen versies zijn opgegeven, gebruikt Windows een sectie Models zonder TargetOSVersion-decoratie voor alle versies van alle besturingssystemen.

TargetOSVersion decoratie-indeling

In het volgende voorbeeld ziet u de juiste indeling van de TargetOSVersion-decoratie voor Windows XP via Windows 10 versie 1511:

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

Vanaf Windows 10 versie 1607 (build 14310 en hoger) bevat de juiste indeling van de TargetOSVersion-decoratieBuildNumber:

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

Elk veld wordt als volgt gedefinieerd:

nt
Geeft aan dat het doelbesturingssysteem op NT is gebaseerd. Windows 2000 en latere versies van Windows zijn allemaal gebaseerd op NT.

Architecture
Identificeert het hardwareplatform. Zie voor meer informatie over platformdecoraties voor architecturen in de secties ModellenINF-bestanden maken voor meerdere platforms en besturingssystemen.

OSMajorVersion
Een getal dat het hoofdversienummer voor het besturingssysteem vertegenwoordigt. Zie OSMajorVersion in INF Manufacturer section voor een tabel met hoofdversies van de Windows-besturingssystemen.

OSMinorVersion
Een getal dat het onderversienummer voor het besturingssysteem vertegenwoordigt. Zie de sectie OSMinorVersion in de sectie Manufacturer van INF voor een tabel met secundaire versies voor de Windows-besturingssystemen.

ProductType
Een getal dat een van de VER_NT_xxxx-vlaggen vertegenwoordigt die zijn gedefinieerd in Winnt.h, zoals:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Als een producttype is opgegeven, wordt het INF-bestand alleen gebruikt als het besturingssysteem overeenkomt met het opgegeven producttype. Als het INF-bestand meerdere producttypen ondersteunt voor één besturingssysteemversie, zijn er meerdere TargetOSVersion-vermeldingen vereist.

SuiteMask
Een getal dat een combinatie van een of meer van de VER_SUITE_xxxx-vlaggen vertegenwoordigt die zijn gedefinieerd in Winnt.h. Deze vlaggen omvatten het volgende:

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)

Als een of meer suitemaskerwaarden zijn opgegeven, wordt het INF-bestand alleen gebruikt als het besturingssysteem overeenkomt met alle opgegeven productsuites. Als het INF-bestand ondersteuning biedt voor meerdere combinaties van productpakketten voor één besturingssysteemversie, zijn er meerdere TargetOSVersion-vermeldingen vereist.

BuildNumber
Hiermee geeft u het minimale buildnummer van het besturingssysteem op van de Windows 10 release waarop de sectie van toepassing is, beginnend met build 14310 of hoger. Zie BuildNumber in sectie Manufacturer in INF voor een tabel met buildnummers voor de Windows-besturingssystemen.

Het buildnummer wordt verondersteld alleen relatief te zijn ten opzichte van een specifieke major/minor-versie van het besturingssysteem en kan opnieuw worden ingesteld voor een toekomstige major/minor-versie van het besturingssysteem.

Elk buildnummer dat is gespecificeerd met de TargetOSVersion-decoratie wordt alleen geëvalueerd wanneer de hoofd-/secundaire versie van het besturingssysteem in TargetOSVersion exact overeenkomt met de huidige versie van het besturingssysteem (of AltPlatformInfo).  Als de huidige versie van het besturingssysteem groter is dan de versie van het besturingssysteem die is opgegeven door de TargetOSVersion-decoratie (OSMajorVersion, OSMinorVersion), wordt de sectie beschouwd als van toepassing, ongeacht het opgegeven buildnummer. Als de huidige versie van het besturingssysteem kleiner is dan de versie van het besturingssysteem die is opgegeven door de TargetOSVersion-decoratie, is de sectie niet van toepassing.

Als het buildnummer wordt opgegeven, moeten de versie van het besturingssysteem en buildNumber van de TargetOSVersion-decoratie beide groter zijn dan de versie van het besturingssysteem en het buildnummer van de Windows 10 build 14310 waar deze decoratie voor het eerst is geïntroduceerd. Eerdere versies van het besturingssysteem zonder deze wijzigingen (bijvoorbeeld Windows 10 build 10240) parseren onbekende decoraties niet, dus een poging om deze eerdere builds te richten, voorkomt dat het besturingssysteem de decoratie helemaal geldig beschouwt.

Hoe Windows TargetOSVersion-decoraties verwerkt

Wanneer u een stuurprogrammapakket op een apparaat installeert, volgt Windows deze stappen om de Models-secties in een INF-bestand te verwerken:

  1. Als een of meer secties INF Models de TargetOS-decoratie hebben, selecteert Windows de sectie INF Models die zich het dichtst bij de kenmerken van het hostbesturingssysteem bevindt.

    Als bijvoorbeeld een sectie Models in een INF-bestand een TargetOS-decoratie van ntx86.5.1 heeft, selecteert Windows die sectie als op het hostbesturingssysteem Windows XP of een nieuwere versie van Windows wordt uitgevoerd op een x86-systeem.

    Als een sectie INF-Models een TargetOS-versiering van nt.6.0 heeft, selecteert Windows die sectie als het hostbesturingssysteem Windows Vista of een latere versie van Windows op een ondersteund hardwareplatform is.

    Als een sectie INF-modellen een TargetOS-decoratie van nt.10.0...14393 heeft, selecteert Windows die sectie als het hostbesturingssysteem een Windows 10-build uitvoert die gelijk is aan of groter is dan 14393 op elk ondersteund hardwareplatform.

  2. Als geen van de secties met INF-modellen een TargetOS-decoratie heeft die overeenkomt met het hostbesturingssysteem, selecteert Windows de sectie Modellen met een overeenkomende platformextensie of geen platformextensie.

    Als een sectie Models bijvoorbeeld een platformextensie van ntx86 heeft, selecteert Windows die sectie als het hostbesturingssysteem Microsoft Windows 2000 of een nieuwere versie van Windows is op een x86-systeem.

  3. Als Windows geen overeenkomende INF Models-sectie kan vinden, wordt dat stuurprogrammapakket niet op het apparaat geïnstalleerd.

Hoe TargetOsVersion-decoraties worden opgelost

Bij het bepalen van de toepasselijke secties INF Models wordt de evaluatie per regel uitgevoerd in de sectie INF Manufacturer, waarbij elke regel voor een bepaalde versie van het besturingssysteem maximaal één toepasselijke sectie kan hebben.

Het onderstaande INF-fragment toont een voorbeeld waarbij [ExampleModelsSection_1.NTamd64.10.0... 17134] wordt geselecteerd op een Windows buildnummer dat gelijk is aan of groter is dan 17134 en zowel [ExampleModelsSection_1.NTamd64.10.0... 17134] als [ExampleModelsSection_2.NTamd64.10.0... 22000] worden geselecteerd op een Windows buildnummer dat gelijk is aan of groter is dan 22000.

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

Het onderstaande INF-fragment toont een voorbeeld waarbij [ExampleModelsSection_1.NTamd64.10.0... 17134] wordt geselecteerd op een Windows buildnummer dat gelijk is aan of groter is dan 17134 en [ExampleModelsSection_1.NTamd64.10.0... 22000] wordt geselecteerd op een Windows buildnummer dat gelijk is aan of groter is dan 22000.

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

Voorbeeld-INF-modellensecties met TargetOSVersion-decoraties

Toepassen op een bepaalde versie van het besturingssysteem en later

In dit INF-fragment ziet u hoe u kunt opgeven dat een stuurprogrammapakket alleen van toepassing is op een bepaalde versie van het besturingssysteem en later.

[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]
...

Alleen van toepassing op één versie van het besturingssysteem

In dit INF-fragment ziet u hoe u kunt opgeven dat een stuurprogrammapakket alleen van toepassing is op één versie van het besturingssysteem.

[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]
...

Toepassen op meerdere besturingssysteemversies met verschillende instellingen

Dit INF-fragment laat zien hoe u kunt opgeven dat voor een stuurprogrammapakket verschillende installatie-instructies gelden voor verschillende versies van het besturingssysteem.

[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]
...