Kombinieren von Plattformerweiterungen mit Betriebssystemversionen

Im Abschnitt INF Manufacturer einer INF-Datei können Sie INF Models-Abschnitte bereitstellen, die für verschiedene Versionen des Windows-Betriebssystems spezifisch sind. Diese versionsspezifischen Modelle-Abschnitte werden mithilfe der TargetOSVersion-Dekoration identifiziert.

Innerhalb derselben INF-Datei können unterschiedliche INF-Models-Abschnitte für verschiedene Versionen des Betriebssystems angegeben werden. Die angegebenen Versionen geben Zielbetriebssystemversionen an, mit denen die INF-Models-Abschnitte verwendet werden. Wenn keine Versionen angegeben sind, verwendet Windows einen Abschnitt "Models" ohne die TargetOSVersion-Dekoration für alle Versionen aller Betriebssysteme.

TargetOSVersion-Dekorationsformat

Das folgende Beispiel zeigt das richtige Format der TargetOSVersion-Dekoration für Windows XP bis Windows 10, Version 1511:

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

Ab Windows 10, Version 1607 (Build 14310 und höher), enthält das richtige Format der TargetOSVersion-Dekoration einschließlich BuildNumber:

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

Jedes Feld wird wie folgt definiert:

nt
Gibt an, dass das Zielbetriebssystem NT-basiert ist. Windows 2000 und neuere Versionen von Windows sind alle NT-basiert.

Architecture
Identifiziert die Hardwareplattform. Weitere Informationen zu Architekturplattform-Dekorationen zu den Models-Abschnitten finden Sie unter Creating INF Files for Multiple Platforms and Operating Systems.

OSMajorVersion
Eine Zahl, die die Hauptversionsnummer für das Betriebssystem darstellt. Eine Tabelle mit Hauptversionen für die Windows-Betriebssysteme finden Sie unter OSMajorVersion im Abschnitt „INF Manufacturer“.

OSMinorVersion
Eine Zahl, die die Nummer der Nebenversion für das Betriebssystem darstellt. Eine Tabelle mit einer Auflistung der Nebenversionen für die Windows-Betriebssysteme finden Sie unter OSMinorVersion im INF Manufacturer section.

ProductType
Eine Zahl, die eines der VER_NT_xxxx-Flags darstellt, die in Winnt.h definiert sind, z. B. die folgenden:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Wenn ein Produkttyp angegeben ist, wird die INF-Datei nur verwendet, wenn das Betriebssystem dem angegebenen Produkttyp entspricht. Wenn die INF-Datei mehrere Produkttypen für eine einzelne Betriebssystemversion unterstützt, sind mehrere TargetOSVersion-Einträge erforderlich.

SuiteMask
Eine Zahl, die eine Kombination aus einer oder mehreren der in Winnt.h definierten VER_SUITE_xxxx-Flags darstellt. Diese Flags umfassen Folgendes:

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)

Wenn mindestens ein Suitenmaskenwert angegeben ist, wird die INF-Datei nur verwendet, wenn das Betriebssystem mit allen angegebenen Produktsuiten übereinstimmt. Wenn die INF-Datei mehrere Produktsuite-Kombinationen für eine einzelne Betriebssystemversion unterstützt, sind mehrere TargetOSVersion-Einträge erforderlich.

BuildNumber
Gibt die mindeste Betriebssystembuildnummer der Windows 10 Version an, auf die der Abschnitt angewendet wird, beginnend mit Build 14310 oder höher. Eine Tabelle mit Buildnummern für die Windows Betriebssysteme finden Sie im Abschnitt BuildNumber im Abschnitt „INF Manufacturer“.

Es wird davon ausgegangen, dass die Buildnummer nur in Bezug auf eine bestimmte Haupt-/Nebenversion des Betriebssystems gültig ist und möglicherweise für eine zukünftige Haupt-/Nebenversion des Betriebssystems zurückgesetzt wird.

Jede durch die TargetOSVersion-Dekoration angegebene Buildnummer wird nur ausgewertet, wenn die Betriebssystem-Haupt-/Nebenversion von TargetOSVersion exakt mit der aktuellen Betriebssystemversion (oder AltPlatformInfo-Version) übereinstimmt.  Wenn die aktuelle Betriebssystemversion größer als die durch die TargetOSVersion-Dekoration (OSMajorVersion,OSMinorVersion) angegebene Betriebssystemversion ist, wird der Abschnitt unabhängig von der angegebenen Buildnummer als anwendbar betrachtet. Ebenso gilt der Abschnitt nicht, wenn die aktuelle Betriebssystemversion kleiner als die betriebssystemversion ist, die durch die TargetOSVersion-Dekoration angegeben ist.

Wenn die Buildnummer angegeben wird, müssen sowohl die Betriebssystemversion als auch die Buildnummer der TargetOSVersion-Dekoration größer sein als die Betriebssystemversion bzw. die Buildnummer des Windows 10-Builds 14310, in dem diese Dekoration zum ersten Mal eingeführt wurde. Frühere Versionen des Betriebssystems ohne diese Änderungen (z. B. Windows 10 Build 10240) können unbekannte Dekorationen nicht parsen, sodass ein Versuch, diese früheren Builds anzusprechen, tatsächlich verhindert, dass das Betriebssystem die Dekoration überhaupt als gültig betrachtet.

Wie Windows TargetOSVersion-Dekorationen verarbeitet

Wenn Sie ein Treiberpaket auf einem Gerät installieren, führt Windows die folgenden Schritte aus, um die INF-Modelle-Abschnitte in einer INF-Datei zu verarbeiten:

  1. Wenn mindestens ein INF-Models-Abschnitt die TargetOS-Dekoration enthält, wählt Windows den INF-Abschnitt Models aus, der den Attributen für das Hostbetriebssystem am nächsten kommt.

    Wenn beispielsweise ein INF-Models-Abschnitt eine TargetOS-Dekoration von ntx86.5.1 aufweist, wählt Windows diesen Abschnitt aus, wenn auf dem Hostbetriebssystem Windows XP oder eine höhere Windows-Version auf einem x86-basierten System ausgeführt wird.

    Wenn ein INF Models-Abschnitt eine TargetOS-Dekoration von nt.6.0 aufweist, wählt Windows diesen Abschnitt aus, wenn das Hostbetriebssystem auf einer beliebigen unterstützten Hardwareplattform Windows Vista oder eine höhere Windows-Version ist.

    Wenn ein INF-Models-Abschnitt eine TargetOS-Dekoration von nt.10.0...14393 hat, wählt Windows diesen Abschnitt aus, wenn auf dem Hostbetriebssystem ein Windows 10-Build mit der Nummer 14393 oder höher auf einer beliebigen unterstützten Hardwareplattform ausgeführt wird.

  2. Wenn keiner der INF-Models-Abschnitte eine TargetOS-Dekoration aufweist, die dem Hostbetriebssystem entspricht, wählt Windows den Models-Abschnitt aus, der entweder über eine passende Plattformerweiterung verfügt oder keine Plattformerweiterung hat.

    Wenn beispielsweise ein ABSCHNITT "INF Models" eine Plattformerweiterung von ntx86 aufweist, wählt Windows diesen Abschnitt aus, wenn das Hostbetriebssystem Microsoft Windows 2000 oder eine höhere Windows-Version auf einem x86-basierten System ist.

  3. Wenn Windows keinen übereinstimmenden INF-Modelle-Abschnitt finden kann, wird dieses Treiberpaket nicht auf dem Gerät installiert.

Wie TargetOsVersion-Dekorationen aufgelöst werden

Bei der Bestimmung der anwendbaren Abschnitte „INF Models“ wird die Auswertung pro Zeile im Abschnitt „INF Manufacturer“ durchgeführt, wobei für eine bestimmte Betriebssystemversion jede Zeile bis zu einem anwendbaren Abschnitt enthalten kann.

Der unten stehende INF-Auszug zeigt ein Beispiel, in dem [ExampleModelsSection_1.NTamd64.10.0...17134] auf einer Windows-Buildnummer ausgewählt wird, die gleich oder größer als 17134 ist, und beide [ExampleModelsSection_1.NTamd64.10.0...17134] und [ExampleModelsSection_2.NTamd64.10.0...22000] auf einer Windows-Buildnummer ausgewählt werden, die gleich oder größer als 22000 ist.

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

Der folgende INF-Auszug zeigt ein Beispiel, bei dem [ExampleModelsSection_1.NTamd64.10.0...17134] auf einer Windows-Buildnummer gleich oder größer als 17134 ausgewählt wird und [ExampleModelsSection_1.NTamd64.10.0...22000] auf einer Windows-Buildnummer gleich oder größer als 22000 ausgewählt wird.

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

Beispielabschnitte für INF-Modelle mit TargetOSVersion-Dekorationen

Anwenden auf eine bestimmte Betriebssystemversion und spätere Versionen

Dieser INF-Auszug zeigt, wie Sie angeben können, dass ein Treiberpaket nur für eine bestimmte Betriebssystemversion und höher gilt.

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

Nur auf eine einzelne Betriebssystemversion anwenden

Dieser INF-Auszug zeigt, wie Sie angeben können, dass ein Treiberpaket nur für eine einzelne Betriebssystemversion gilt.

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

Anwenden auf mehrere Betriebssystemversionen mit unterschiedlichen Einstellungen

Dieser INF-Auszug zeigt, wie Sie angeben können, dass ein Treiberpaket für verschiedene Betriebssystemversionen unterschiedlichen Installationsanweisungen folgen soll.

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