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

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

Dans le même fichier INF, différentes sections de modèles INF 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 Inf Models seront utilisées. Si aucune version n’est spécifiée, Windows utilise une section Modèles sans la 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 versions ultérieures), 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 versions ultérieures de Windows sont toutes basées sur NT.

Architecture
Identifie la plateforme matérielle. Pour plus d’informations sur les sections décorations de plateforme d’architecture sur les 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 principales versions pour les systèmes d’exploitation Windows, consultez la section OSMajorVersion in INF Manufacturer.

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

ProductType
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 n’est utilisé que 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 de système d’exploitation, plusieurs entrées TargetOSVersion sont requises.

SuiteMask
Nombre qui représente une combinaison d’un ou plusieurs indicateurs VER_SUITE_xxxx définis dans Winnt.h. Ces indicateurs sont les 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 n’est utilisé que 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 de 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 une table répertoriant les numéros de build pour les systèmes d’exploitation Windows, consultez la section BuildNumber dans INF Manufacturer.

Le numéro de build est supposé être relatif à une version principale/mineure spécifique du système d’exploitation uniquement, et peut être réinitialisé pour une version ultérieure du système d’exploitation majeur/secondaire.

Tout numéro de build spécifié par la décoration TargetOSVersion est évalué uniquement lorsque la version principale/mineure du système d’exploitation 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 buildNumber de la décoration TargetOSVersion doivent être supérieurs à la version du système d’exploitation et au numéro de build du Windows 10 build 14310 où 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’analysent pas les décorations inconnues, de sorte qu’une tentative de cibler ces versions antérieures empêchera le système d’exploitation de considérer la décoration valide du tout.

Comment Windows traite les décorations TargetOSVersion

Lorsque vous installez un package de pilotes sur un appareil, Windows effectue les étapes suivantes pour traiter les sections Inf Models dans un fichier INF :

  1. Si une ou plusieurs sections de 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 Inf Models 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 INF Models 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 une 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 Windows 10 build égale ou supérieure à 14393 sur n’importe quelle plateforme matérielle prise en charge.

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

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

  3. Si Windows ne trouve pas une section de modèles INF correspondant, 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 de modèles INF applicables, l’évaluation est effectuée par ligne dans la section Fabricant INF, où, pour une version de système d’exploitation donnée, 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 supérieur ou égal à 17134 , et à la fois [ExampleModelsSection_1.NTamd64.10.0... 17134] et [ExampleModelsSection_2.NTamd64.10.0... 22000] sera sélectionné sur un numéro de build Windows supérieur ou égal à 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 supérieur ou égal à 17134, et [ExampleModelsSection_1.NTamd64.10.0... 22000] sera sélectionné sur un numéro de build Windows supérieur ou égal à 22000.

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

Exemples de sections de modèles INF avec des décorations TargetOSVersion

Appliquer à une version de système d’exploitation particulière et ultérieure

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 à une seule version du système d’exploitation

Cet extrait INF montre comment vous pouvez spécifier qu’un package de pilotes ne s’applique qu’à 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 de système d’exploitation avec des paramètres différents

Cet extrait INF montre comment spécifier qu’un package de pilotes doit suivre différentes instructions d’installation pour différentes versions de 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]
...