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

Dentro de la sección Fabricante inf de un archivo INF, puede proporcionar secciones modelos INF específicas de varias versiones del sistema operativo Windows. Estas secciones de modelos 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 Modelos INF. 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 targetOSVersion

En el ejemplo siguiente se muestra el formato correcto de la decoración TargetOSVersion para Windows XP a través de 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 versiones posteriores de Windows están basados en NT.

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

OSMajorVersion
Número que representa el número de versión principal del sistema operativo. Para obtener una tabla en la que se enumeran las versiones principales de los sistemas operativos Windows, consulte la sección OSMajorVersion in INF Manufacturer (Fabricante de INF).

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 in INF Manufacturer (Fabricante de INF).

ProductType
Número que representa una de las marcas VER_NT_xxxx definidas en Winnt.h, como las 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 única 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 de aplicaciones, 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 única 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 Windows 10 a la que se aplica la sección, a partir de la compilación 14310 o posterior. Para obtener una tabla que enumera los números de compilación de los sistemas operativos Windows, consulte la sección BuildNumber in INF Manufacturer (Número de compilación en inf fabricante).

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

Cualquier número de compilación especificado por la decoración TargetOSVersion solo se evalúa cuando la versión principal o 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 se introdujo esta decoración 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 dirigirse a estas compilaciones anteriores impedirá que el sistema operativo considere la decoración válida en absoluto.

Cómo procesa Windows las decoraciones de 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 Modelos 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 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 Modelos INF tiene una decoración targetOS que coincida con el sistema operativo host, Windows selecciona la sección Modelos que tiene una extensión de plataforma coincidente o ninguna extensión de plataforma.

    Por ejemplo, si una sección Modelos INF tiene una extensión de plataforma de 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 de modelos INF coincidente, no instalará ese paquete de controladores en el dispositivo.

Cómo se resuelven las decoraciones targetOsVersion

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

En el extracto 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á 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 extracto 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

Secciones de modelos INF de ejemplo con decoraciones targetOSVersion

Se aplica a una versión determinada del sistema operativo y versiones 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]
...

Aplicar solo a una sola versión del sistema operativo

Este extracto inf muestra cómo puede especificar que un paquete de controladores solo se aplica a una única 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]
...

Aplicar a varias versiones del sistema operativo con diferentes configuraciones

En este extracto inf se muestra cómo puede especificar que un paquete de controladores debe seguir diferentes instrucciones de instalación 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]
...