Kombination av plattformstillägg med operativsystemversioner

I avsnittet INF Manufacturer i en INF-fil kan du ange INF-modellavsnitt som är specifika för olika versioner av Windows-operativsystemet. Dessa versionsspecifika Models-avsnitt identifieras med hjälp av TargetOSVersion-dekorationen.

I samma INF-fil kan olika INF-avsnitten Models anges för olika versioner av operativsystemet. De angivna versionerna anger måloperativsystemversioner som INF Models-avsnitten ska användas för. Om inga versioner anges använder Windows avsnittet Models utan dekorationen TargetOSVersion för alla versioner av alla operativsystem.

TargetOSVersion-dekorationsformat

I följande exempel visas rätt format för TargetOSVersion-dekorationen för Windows XP via Windows 10 version 1511:

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

Från och med Windows 10 version 1607 (build 14310 och senare) innehåller rätt format för TargetOSVersion-dekorationen BuildNumber:

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

Varje fält definieras på följande sätt:

nt
Anger att måloperativsystemet är NT-baserat. Windows 2000 och senare versioner av Windows är alla NT-baserade.

Architecture
Identifierar hårdvaruplattformen. Mer information om arkitekturplattformsdekorationer i avsnitten Models finns i Skapa INF-filer för flera plattformar och operativsystem.

OSMajorVersion
Ett tal som representerar huvudversionsnumret för operativsystemet. En tabell med huvudversioner för Windows-operativsystem finns i avsnittet OSMajorVersion i INF Manufacturer section.

OSMinorVersion
Ett tal som representerar delversionsnumret för operativsystemet. En tabell med mindre versioner för Windows-operativsystem finns i avsnittet INF Manufacturer under OSMinorVersion.

ProductType
Ett tal som representerar en av VER_NT_xxxx-flaggorna som definierats i Winnt.h, till exempel följande:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Om en produkttyp anges används INF-filen endast om operativsystemet matchar den angivna produkttypen. Om INF-filen stöder flera produkttyper för en enda operativsystemversion krävs flera TargetOSVersion-poster .

SuiteMask
Ett tal som representerar en kombination av en eller flera av de VER_SUITE_xxxx-flaggor som definierats i Winnt.h. Dessa flaggor omfattar följande:

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)

Om ett eller flera svitmaskvärden anges används INF-filen endast om operativsystemet matchar alla angivna produktsviter. Om INF-filen stöder flera kombinationer av produktsviter för en enda operativsystemversion krävs flera TargetOSVersion-poster .

BuildNumber
Anger det minsta OS-byggnumret för den Windows 10-version som avsnittet gäller, från och med version 14310 eller senare. En tabell som visar byggnummer för Windows-operativsystem finns i avsnittet BuildNumber i avsnittet INF Manufacturer.

Versionsnumret antas vara relativt en viss specifik huvud-/delversion av operativsystemet och kan återställas för någon framtida huvud-/delversion av operativsystemet.

Alla versionsnummer som anges av TargetOSVersion-dekorationen utvärderas endast när huvud-/delversionen för TargetOSVersion exakt matchar den aktuella versionen av operativsystemet (eller AltPlatformInfo).  Om den aktuella os-versionen är större än den os-version som anges av TargetOSVersion-dekorationen (OSMajorVersion, OSMinorVersion) anses avsnittet vara tillämpligt oavsett det angivna byggnumret. På samma sätt gäller inte avsnittet om den aktuella os-versionen är mindre än den operativsystemversion som anges av TargetOSVersion-dekorationen.

Om versionsnumret anges måste operativsystemets version och BuildNumber för TargetOSVersion-dekorationen båda vara större än operativsystemets version och byggnumret för Windows 10 version 14310 där den här dekorationen först introducerades. Tidigare versioner av operativsystemet utan dessa ändringar (till exempel Windows 10 version 10240) parsar inte okända dekorationer, så ett försök att rikta in sig på dessa tidigare versioner hindrar faktiskt operativsystemet från att betrakta dekorationen som giltig alls.

Så här bearbetar Windows TargetOSVersion-dekorationer

När du installerar ett drivrutinspaket på en enhet följer Windows dessa steg för att bearbeta avsnitten Models i INF i en INF-fil:

  1. Om ett eller flera INF-modellavsnitt har dekorationen TargetOS väljer Windows avsnittet INF-modeller som är närmast attributen för värdoperativsystemet.

    Om ett INF-modellavsnitt till exempel har en TargetOS-dekoration av ntx86.5.1 väljer Windows det avsnittet om värdoperativsystemet kör Windows XP eller senare version av Windows på ett x86-baserat system.

    På samma sätt, om ett INF-modellavsnitt har en TargetOS-dekoration av nt.6.0 väljer Windows det avsnittet om värdoperativsystemet är Windows Vista eller senare version av Windows på någon maskinvaruplattform som stöds.

    Om INF-avsnittet Models har en TargetOS-dekoration av nt.10.0...14393, Windows väljer det avsnittet om värdoperativsystemet kör en Windows 10-build som är lika med eller större än 14393 på någon maskinvaruplattform som stöds.

  2. Om inget av INF Models-avsnitten har en TargetOS-dekoration som matchar värdoperativsystemet väljer Windows avsnittet Models som antingen har ett matchande plattformstillägg eller inget plattformstillägg.

    Om avsnittet Models i en INF-fil till exempel har ett plattformstillägg av ntx86, väljer Windows det avsnittet om värdoperativsystemet är Microsoft Windows 2000 eller en senare version av Windows på ett x86-baserat system.

  3. Om Windows inte kan hitta ett matchande avsnittet INF Models installeras inte drivrutinspaketet på enheten.

Så här avgörs TargetOsVersion-dekorationer

När du fastställer tillämpliga avsnitten för INF-modeller utförs utvärderingen per rad i avsnittet INF Manufacturer, där varje rad för en viss os-version kan ha upp till ett tillämpligt avsnitt.

Inf-utdraget nedan visar ett exempel där [ExampleModelsSection_1.NTamd64.10.0...17134] väljs på ett Windows versionsnummer som är lika med eller större än 17134 och både [ExampleModelsSection_1.NTamd64.10.0...17134] och [ExampleModelsSection_2.NTamd64.10.0...22000] väljs på ett Windows versionsnummer som är lika med eller större än 22000.

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

Inf-utdraget nedan visar ett exempel där [ExampleModelsSection_1.NTamd64.10.0...17134] väljs på ett Windows versionsnummer som är lika med eller större än 17134 och [ExampleModelsSection_1.NTamd64.10.0...22000] väljs på ett Windows versionsnummer som är lika med eller större än 22000.

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

Exempel på INF-modeller med TargetOSVersion-dekorationer

Gäller för en viss OS-version och senare

Det här INF-utdraget visar hur du kan ange att ett drivrutinspaket endast gäller för en viss operativsystemversion och senare.

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

Gäller endast en enskild OS-version

Det här INF-utdraget visar hur du kan ange att ett drivrutinspaket endast gäller för en enskild operativsystemversion.

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

Tillämpa på flera OS-versioner med olika inställningar

Det här INF-utdraget visar hur du kan ange att ett drivrutinspaket ska följa olika installationsanvisningar för olika OS-versioner.

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