Combinación de extensiones de plataforma con versiones del sistema operativo

En la sección Manufacturer de INF de un archivo INF, puede proporcionar secciones Models de INF específicas de varias versiones del sistema operativo Windows. Estas secciones Models específicas de la versión se identifican mediante la decoración TargetOSVersion.

Dentro del mismo archivo INF, se pueden especificar diferentes secciones de modelos INF para diferentes versiones del sistema operativo. Las versiones especificadas indican las versiones del sistema operativo de destino con las que se usarán las secciones INF Models. Si no se especifica ninguna versión, Windows usa una sección Models sin la decoración TargetOSVersion para todas las versiones de todos los sistemas operativos.

Formato de decoración de TargetOSVersion

En el ejemplo siguiente se muestra el formato correcto de la decoración TargetOSVersion para Windows XP hasta Windows 10, versión 1511:

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

A partir de Windows 10, versión 1607 (compilación 14310 y posteriores), el formato correcto de la decoración TargetOSVersion incluye BuildNumber:

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

Cada campo se define de la siguiente manera:

nt
Especifica que el sistema operativo de destino está basado en NT. Windows 2000 y las versiones posteriores de Windows se basan en NT.

Architecture
Identifica la plataforma de hardware. Para obtener más información sobre las decoraciones de la plataforma de arquitectura en las secciones Modelos, consulte Creación de archivos INF para varias plataformas y sistemas operativos.

OSMajorVersion
Número que representa el número de versión principal del sistema operativo. Para ver una tabla que enumera las versiones principales de los sistemas operativos Windows, consulte OSMajorVersion en la sección INF Manufacturer.

OSMinorVersion
Número que representa el número de versión secundaria del sistema operativo. Para obtener una tabla en la que se enumeran las versiones secundarias de los sistemas operativos Windows, consulte la sección OSMinorVersion en la sección Fabricante de INF.

ProductType
Número que representa una de los indicadores VER_NT_xxxx definidos en Winnt.h, como los siguientes:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Si se especifica un tipo de producto, el archivo INF solo se usará si el sistema operativo coincide con el tipo de producto especificado. Si el archivo INF admite varios tipos de producto para una sola versión del sistema operativo, se requieren varias entradas targetOSVersion .

SuiteMask
Número que representa una combinación de una o varias de las marcas VER_SUITE_xxxx definidas en Winnt.h. Estas marcas incluyen lo siguiente:

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 se especifican uno o varios valores de máscara de conjunto, el archivo INF solo se usará si el sistema operativo coincide con todos los conjuntos de productos especificados. Si el archivo INF admite varias combinaciones de conjuntos de productos para una sola versión del sistema operativo, se requieren varias entradas TargetOSVersion.

BuildNumber
Especifica el número mínimo de compilación del sistema operativo de la versión de Windows 10 a la que se aplica la sección, a partir de la compilación 14310 o posterior. Para obtener una tabla en la que se enumeran los números de compilación de los sistemas operativos Windows, consulte BuildNumber en la sección INF Manufacturer.

Se supone que el número de compilación es relativo únicamente a una versión principal o secundaria específica del sistema operativo y puede restablecerse para alguna versión secundaria o principal futura del sistema operativo.

Cualquier número de compilación especificado por la decoración TargetOSVersion solo se evalúa cuando la versión principal/secundaria del sistema operativo de TargetOSVersion coincide exactamente con la versión actual del sistema operativo (o AltPlatformInfo).  Si la versión actual del sistema operativo es mayor que la versión del sistema operativo especificada por la decoración TargetOSVersion (OSMajorVersion,OSMinorVersion), la sección se considera aplicable independientemente del número de compilación especificado. Del mismo modo, si la versión actual del sistema operativo es menor que la versión del sistema operativo especificada por la decoración TargetOSVersion, la sección no es aplicable.

Si se proporciona el número de compilación, la versión del sistema operativo y BuildNumber de la decoración TargetOSVersion deben ser mayores que la versión del sistema operativo y el número de compilación del Windows 10 compilación 14310 donde esta decoración se introdujo por primera vez. Las versiones anteriores del sistema operativo sin estos cambios (por ejemplo, Windows 10, compilación 10240) no analizarán las decoraciones desconocidas, por lo que un intento de usar como destino estas compilaciones anteriores impedirá que el sistema operativo considere la decoración válida en absoluto.

Cómo Windows procesa las decoraciones TargetOSVersion

Al instalar un paquete de controladores en un dispositivo, Windows sigue estos pasos para procesar las secciones Modelos INF dentro de un archivo INF:

  1. Si una o varias secciones de modelos INF tienen la decoración TargetOS, Windows selecciona la sección Modelos INF más cercana a los atributos del sistema operativo host.

    Por ejemplo, si una sección Models INF tiene una decoración TargetOS de ntx86.5.1, Windows selecciona esa sección si el sistema operativo host ejecuta Windows XP o una versión posterior de Windows en un sistema basado en x86.

    Del mismo modo, si una sección Modelos INF tiene una decoración TargetOS de nt.6.0, Windows selecciona esa sección si el sistema operativo host es Windows Vista o una versión posterior de Windows en cualquier plataforma de hardware compatible.

    Si una sección Modelos de INF tiene una decoración TargetOS de nt.10.0... 14393, Windows selecciona esa sección si el sistema operativo host ejecuta una compilación de Windows 10 igual o superior a 14393 en cualquier plataforma de hardware compatible.

  2. Si ninguna de las secciones Models INF tiene una decoración targetOS que coincide con el sistema operativo host, Windows selecciona la sección Models que tiene una extensión de plataforma coincidente o ninguna extensión de plataforma.

    Por ejemplo, si una sección INF Models tiene una extensión de plataforma ntx86, Windows selecciona esa sección si el sistema operativo host es Microsoft Windows 2000 o una versión posterior de Windows en un sistema basado en x86.

  3. Si Windows no encuentra una sección modelos INF coincidente, no instalará ese paquete de controladores en el dispositivo.

Cómo se resuelven las decoraciones targetOsVersion

Al determinar las secciones Models INF aplicables, la evaluación se realiza por línea dentro de la sección Fabricante de INF, donde, para una versión de sistema operativo determinada, cada línea puede tener hasta una sección aplicable.

En el fragmento INF siguiente se muestra un ejemplo en el que [ExampleModelsSection_1.NTamd64.10.0... 17134] se seleccionará en un número de compilación de Windows igual o mayor que 17134 , y ambos [ExampleModelsSection_1.NTamd64.10.0... 17134] y [ExampleModelsSection_2.NTamd64.10.0... 22000] se seleccionarán en un número de compilación de Windows igual o mayor que 22000.

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

En el fragmento INF siguiente se muestra un ejemplo en el que [ExampleModelsSection_1.NTamd64.10.0...17134] se seleccionará en un número de compilación de Windows igual o mayor que 17134, y [ExampleModelsSection_1.NTamd64.10.0...22000] se seleccionará en un número de compilación de Windows igual o mayor que 22000.

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

Ejemplo de secciones de Modelos INF con decoraciones TargetOSVersion

Se aplica a una versión concreta del sistema operativo y posteriores

Este extracto INF muestra cómo puede especificar que un paquete de controladores solo se aplica a una versión concreta del sistema operativo y versiones posteriores.

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

Aplicable solo a una única versión del sistema operativo

Este extracto inf muestra cómo puede especificar que un paquete de controladores solo se aplica a una sola versión del sistema operativo.

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

Se aplica a varias versiones del sistema operativo con diferentes configuraciones

Este extracto inf muestra cómo puede especificar que un paquete de controladores debe seguir instrucciones de instalación diferentes para diferentes versiones del sistema operativo.

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