Freigeben über


Kombinieren von Plattformerweiterungen mit Betriebssystemversionen

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

In derselben INF-Datei können verschiedene INF-Modelle-Abschnitte für verschiedene Versionen des Betriebssystems angegeben werden. Die angegebenen Versionen geben Die Zielbetriebssystemversionen an, mit denen die Abschnitte INF-Modelle verwendet werden. Wenn keine Versionen angegeben sind, verwendet Windows einen Abschnitt Modelle ohne 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[Architektur][.[OSMajorVersion] [.[OSMinorVersion] [.[ProductType] [.[SuiteMask]]]]]

Ab Windows 10 Version 1607 (Build 14310 und höher) umfasst das richtige Format der TargetOSVersion-DekorationBuildNumber:

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

Jedes Feld wird wie folgt definiert:

Nt
Gibt an, dass das Zielbetriebssystem NT-basiert ist. Windows 2000 und höhere Versionen von Windows sind alle NT-basiert.

Architektur
Gibt die Hardwareplattform an. Weitere Informationen zur Architekturplattformdekoration in Den Abschnitten Modelle finden Sie unter Erstellen von INF-Dateien für mehrere Plattformen und Betriebssysteme.

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

OSMinorVersion
Eine Zahl, die die Nebenversionsnummer für das Betriebssystem darstellt. Eine Tabelle mit Nebenversionen für die Windows-Betriebssysteme finden Sie im Abschnitt OSMinorVersion im INF-Hersteller.

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

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Wenn ein Produkttyp angegeben wird, wird die INF-Datei nur verwendet, wenn das Betriebssystem mit dem angegebenen Produkttyp übereinstimmt. 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 mindestens einem 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 Suite-Maskenwert angegeben wird, wird die INF-Datei nur verwendet, wenn das Betriebssystem allen angegebenen Produktsammlungen entspricht. Wenn die INF-Datei mehrere Product Suite-Kombinationen für eine einzelne Betriebssystemversion unterstützt, sind mehrere TargetOSVersion-Einträge erforderlich.

BuildNumber
Gibt die Mindestanzahl des Betriebssystembuilds des Windows 10 Release an, auf das sich der Abschnitt bezieht, ab Build 14310. Eine Tabelle mit Buildnummern für die Windows-Betriebssysteme finden Sie im Abschnitt BuildNumber in INF Manufacturer.

Es wird davon ausgegangen, dass die Buildnummer nur relativ zu einer bestimmten Haupt-/Nebenversion des Betriebssystems ist und möglicherweise für eine zukünftige Haupt-/Nebenversion des Betriebssystems zurückgesetzt wird.

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

Wenn die Buildnummer angegeben wird, müssen die Betriebssystemversion und die BuildNummer der TargetOSVersion-Dekoration größer als die Betriebssystemversion und die Buildnummer des Windows 10 Build 14310 sein, in dem diese Dekoration erstmals eingeführt wurde. Frühere Versionen des Betriebssystems ohne diese Änderungen (z. B. Windows 10 Build 10240) analysieren keine unbekannten Dekorationen, sodass ein Versuch, diese früheren Builds als Ziel zu verwenden, tatsächlich verhindert, dass dieses Betriebssystem die Dekoration überhaupt für gültig hält.

So verarbeitet Windows TargetOSVersion-Dekorationen

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

  1. Wenn mindestens ein Abschnitt inF-Modelle über die TargetOS-Dekoration verfügt, wählt Windows den Abschnitt INF-Modelle aus, der den Attributen für das Hostbetriebssystem am nächsten ist.

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

    Wenn ein Abschnitt für INF-Modelle über eine TargetOS-Dekoration von nt.6.0 verfügt, wählt Windows diesen Abschnitt aus, wenn das Hostbetriebssystem Windows Vista oder eine höhere Version von Windows auf einer unterstützten Hardwareplattform ist.

    Wenn ein Abschnitt inF-Modelle eine TargetOS-Dekoration von nt.10.0 aufweist... 14393, Windows wählt diesen Abschnitt aus, wenn das Hostbetriebssystem einen Windows 10 Build gleich oder größer als 14393 auf einer unterstützten Hardwareplattform ausführt.

  2. Wenn keiner der Abschnitte für INF-Modelle über eine TargetOS-Dekoration verfügt, die dem Hostbetriebssystem entspricht, wählt Windows den Abschnitt Modelle aus, der entweder über eine übereinstimmende Plattformerweiterung oder keine Plattformerweiterung verfügt.

    Wenn ein Abschnitt inF-Modelle beispielsweise über eine Plattformerweiterung von ntx86 verfügt, wählt Windows diesen Abschnitt aus, wenn das Hostbetriebssystem Microsoft Windows 2000 oder eine höhere Version von Windows auf einem x86-basierten System ist.

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

Wie TargetOsVersion-Dekorationen aufgelöst werden

Bei der Bestimmung der entsprechenden Abschnitte für INF-Modelle wird die Auswertung innerhalb des Abschnitts INF-Hersteller pro Zeile durchgeführt, wobei jede Zeile für eine bestimmte Betriebssystemversion bis zu einem relevanten Abschnitt enthalten kann.

Der folgende INF-Auszug zeigt ein Beispiel, in dem [ExampleModelsSection_1.NTamd64.10.0... 17134] wird für eine Windows-Buildnummer ausgewählt, die gleich oder größer als 17134 ist, und beide [ExampleModelsSection_1.NTamd64.10.0... 17134] und [ExampleModelsSection_2.NTamd64.10.0... 22000] wird für eine Windows-Buildnummer ausgewählt, 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, in dem [ExampleModelsSection_1.NTamd64.10.0... 17134] wird für eine Windows-Buildnummer ausgewählt, die gleich oder größer als 17134 ist, und [ExampleModelsSection_1.NTamd64.10.0... 22000] wird für eine Windows-Buildnummer ausgewählt, die gleich oder größer als 22000 ist.

[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 höher

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 verschiedene Installationsanweisungen für verschiedene Betriebssystemversionen durchlaufen 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]
...