Combinaison d’extensions de plateforme avec des versions du système d’exploitation

Dans la section Manufacturer INF d’un fichier INF, vous pouvez fournir des sections Models INF spécifiques à différentes versions du système d’exploitation Windows. Ces sections Models spécifiques à la version sont identifiées à l’aide de la décoration TargetOSVersion.

Dans le même fichier INF, différentes sections ModèlesINF peuvent être spécifiées pour différentes versions du système d’exploitation. Les versions spécifiées indiquent les versions de système d’exploitation cibles avec lesquelles les sections Models INF seront utilisées. Si aucune version n’est spécifiée, Windows utilise une section Models sans décoration TargetOSVersion pour toutes les versions de tous les systèmes d’exploitation.

Format de décoration TargetOSVersion

L’exemple suivant montre le format correct de la décoration TargetOSVersion pour Windows XP via Windows 10, version 1511 :

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

À compter de Windows 10, version 1607 (build 14310 et ultérieure), le format correct de la décoration TargetOSVersion inclut BuildNumber :

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

Chaque champ est défini comme suit :

nt
Spécifie que le système d’exploitation cible est basé sur NT. Windows 2000 et les versions ultérieures de Windows sont toutes basées sur NT.

Architecture
Identifie la plateforme matérielle. Pour plus d’informations sur les décorations de plateforme et d’architecture dans les sections Modèles, consultez Création de fichiers INF pour plusieurs plateformes et systèmes d’exploitation.

OSMajorVersion
Nombre qui représente le numéro de version principal du système d’exploitation. Pour obtenir un tableau répertoriant les versions principales des systèmes d’exploitation Windows, consultez OSMajorVersion dans la section INF Manufacturer.

OSMinorVersion
Nombre qui représente le numéro de version secondaire du système d’exploitation. Pour obtenir une table répertoriant les versions mineures des systèmes d’exploitation Windows, consultez OSMinorVersion dans la section INF Manufacturer.

Type de Produit
Nombre qui représente l’un des indicateurs VER_NT_xxxx définis dans Winnt.h, par exemple :

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Si un type de produit est spécifié, le fichier INF sera utilisé uniquement si le système d’exploitation correspond au type de produit spécifié. Si le fichier INF prend en charge plusieurs types de produits pour une seule version du système d’exploitation, plusieurs entrées TargetOSVersion sont requises.

SuiteMask
Nombre qui représente une combinaison d’un ou de plusieurs indicateurs VER_SUITE_xxxx définis dans Winnt.h. Ces indicateurs incluent les éléments suivants :

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)

Si une ou plusieurs valeurs de masque de suite sont spécifiées, le fichier INF sera utilisé uniquement si le système d’exploitation correspond à toutes les suites de produits spécifiées. Si le fichier INF prend en charge plusieurs combinaisons de suite de produits pour une seule version du système d’exploitation, plusieurs entrées TargetOSVersion sont requises.

BuildNumber
Spécifie le numéro de build minimal du système d’exploitation de la version Windows 10 à laquelle la section s’applique, à partir de la build 14310 ou ultérieure. Pour obtenir un tableau répertoriant les numéros de build des systèmes d’exploitation Windows, consultez BuildNumber dans la section INF Manufacturer.

Le numéro de build est censé correspondre uniquement à une version majeure/mineure précise du système d’exploitation et peut être réinitialisé pour une future version majeure/mineure du système d’exploitation.

Tout numéro de build spécifié par la décoration TargetOSVersion est évalué uniquement lorsque la version majeure/mineure de l’OS de TargetOSVersion correspond exactement à la version actuelle du système d’exploitation (ou AltPlatformInfo).  Si la version actuelle du système d’exploitation est supérieure à la version du système d’exploitation spécifiée par la décoration TargetOSVersion (OSMajorVersion,OSMinorVersion), la section est considérée comme applicable, quel que soit le numéro de build spécifié. De même, si la version actuelle du système d’exploitation est inférieure à la version du système d’exploitation spécifiée par la décoration TargetOSVersion, la section n’est pas applicable.

Si le numéro de build est fourni, la version du système d’exploitation et le BuildNumber de la décoration TargetOSVersion doivent tous deux être supérieurs respectivement à la version du système d’exploitation et au numéro de build du build 14310 de Windows 10 dans lequel cette décoration a été introduite pour la première fois. Les versions antérieures du système d’exploitation sans ces modifications (par exemple, Windows 10 build 10240) n’analyseront pas les décorations inconnues, de sorte qu’une tentative de cibler ces versions antérieures empêchera en fait ce système d'exploitation de considérer la décoration comme valide.

Comment Windows traite les décorations TargetOSVersion

Lorsque vous installez un package de pilotes sur un appareil, Windows procède comme suit pour traiter les sections Modèles INF dans un fichier INF :

  1. Si une ou plusieurs sections modèles INF ont la décoration TargetOS, Windows sélectionne la section Modèles INF la plus proche des attributs du système d’exploitation hôte.

    Par exemple, si une section Modèles INF a une décoration TargetOS de ntx86.5.1, Windows sélectionne cette section si le système d’exploitation hôte exécute Windows XP ou une version ultérieure de Windows sur un système x86.

    De même, si une section Modèles INF a une décoration TargetOS de nt.6.0, Windows sélectionne cette section si le système d’exploitation hôte est Windows Vista ou version ultérieure de Windows sur n’importe quelle plateforme matérielle prise en charge.

    Si une section INF Models a une décoration TargetOS de nt.10.0...14393, Windows sélectionne cette section si le système d’exploitation hôte exécute une build Windows 10 égale ou supérieure à 14393 sur n’importe quelle plateforme matérielle prise en charge.

  2. Si aucune des sections Models INF n’a de décoration TargetOS qui correspond au système d’exploitation hôte, Windows sélectionne la section Models qui a une extension de plateforme correspondante ou aucune extension de plateforme.

    Par exemple, si une section INF Models a une extension de plateforme ntx86, Windows sélectionne cette section si le système d’exploitation hôte est Microsoft Windows 2000 ou une version ultérieure de Windows sur un système x86.

  3. Si Windows ne trouve pas de section ModèlesINF correspondante, il n’installe pas ce package de pilotes sur l’appareil.

Comment les décorations TargetOsVersion sont résolues

Lorsque vous déterminez les sections ModèlesINF applicables, l’évaluation est effectuée par ligne dans la section Fabricant INF, où, pour une version donnée du système d’exploitation, chaque ligne peut avoir jusqu’à une section applicable.

L’extrait INF ci-dessous montre un exemple où [ExampleModelsSection_1.NTamd64.10.0...17134] sera sélectionné sur un numéro de build Windows égal ou supérieur à 17134, et les deux [ExampleModelsSection_1.NTamd64.10.0...17134] et [ExampleModelsSection_2.NTamd64.10.0...22000] seront sélectionnés sur un numéro de build Windows égal ou supérieur à 22000.

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

L’extrait INF ci-dessous montre un exemple où [ExampleModelsSection_1.NTamd64.10.0...17134] sera sélectionné sur un numéro de build Windows égal ou supérieur à 17134 et [ExampleModelsSection_1.NTamd64.10.0...22000] sera sélectionné sur un numéro de build Windows égal ou supérieur à 22000.

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

Exemples de sections INF Models avec décorations TargetOSVersion

S’applique à une version spécifique du système d’exploitation et aux versions ultérieures

Cet extrait INF montre comment vous pouvez spécifier qu’un package de pilotes s’applique uniquement à une version de système d’exploitation particulière et ultérieure.

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

Appliquer uniquement à une seule version du système d’exploitation

Cet extrait INF montre comment vous pouvez spécifier qu’un package de pilotes s’applique uniquement à une seule version du système d’exploitation.

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

Appliquer à plusieurs versions du système d’exploitation avec différents paramètres

Cet extrait INF montre comment vous pouvez spécifier qu’un package de pilotes doit suivre différentes instructions d’installation pour différentes versions du système d’exploitation.

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