Combinando extensões de plataforma com versões do sistema operacional

Na seção Fabricante do INF de um arquivo INF, você pode fornecer seções de Modelos INF específicas para várias versões do sistema operacional Windows. Essas seções modelos específicos de versão são identificadas usando a decoração TargetOSVersion .

No mesmo arquivo INF, diferentes seções de Modelos INF podem ser especificadas para versões diferentes do sistema operacional. As versões especificadas indicam versões de sistema operacional de destino com as quais as seções modelos INF serão usadas. Se nenhuma versão for especificada, o Windows usará uma seção Modelos sem a decoração TargetOSVersion para todas as versões de todos os sistemas operacionais.

Formato de decoração TargetOSVersion

O exemplo a seguir mostra o formato correto da decoração TargetOSVersion para Windows XP por meio de Windows 10, versão 1511:

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

Começando com Windows 10, versão 1607 (Build 14310 e posterior), o formato correto da decoração TargetOSVersion inclui BuildNumber:

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

Cada campo é definido da seguinte maneira:

Nt
Especifica que o sistema operacional de destino é baseado em NT. O Windows 2000 e versões posteriores do Windows são todos baseados em NT.

Arquitetura
Identifica a plataforma de hardware. Para obter mais informações sobre decorações de plataforma de arquitetura nas seções Modelos , consulte Criando arquivos INF para várias plataformas e sistemas operacionais.

OSMajorVersion
Um número que representa o número de versão principal do sistema operacional. Para obter uma tabela listando as principais versões para os sistemas operacionais Windows, consulte a seção OSMajorVersion no Fabricante do INF.

OSMinorVersion
Um número que representa o número de versão secundária do sistema operacional. Para obter uma tabela listando versões secundárias para os sistemas operacionais Windows, consulte a seção OSMinorVersion no Fabricante do INF.

ProductType
Um número que representa um dos sinalizadores VER_NT_xxxx definidos em Winnt.h, como o seguinte:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

Se um tipo de produto for especificado, o arquivo INF será usado somente se o sistema operacional corresponder ao tipo de produto especificado. Se o arquivo INF der suporte a vários tipos de produto para uma única versão do sistema operacional, várias entradas TargetOSVersion serão necessárias.

SuiteMask
Um número que representa uma combinação de um ou mais dos sinalizadores VER_SUITE_xxxx definidos em Winnt.h. Esses sinalizadores incluem o seguinte:

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)

Se um ou mais valores de máscara de pacote forem especificados, o arquivo INF será usado somente se o sistema operacional corresponder a todos os pacotes de produtos especificados. Se o arquivo INF der suporte a várias combinações de pacote de produtos para uma única versão do sistema operacional, várias entradas TargetOSVersion serão necessárias.

BuildNumber
Especifica o número mínimo de build do sistema operacional da versão Windows 10 à qual a seção se aplica, começando com o build 14310 ou posterior. Para obter uma tabela listando números de build para os sistemas operacionais Windows, consulte BuildNumber na seção Fabricante do INF.

Presume-se que o número de build seja relativo apenas a alguma versão principal/secundária do sistema operacional específico e pode ser redefinido para alguma versão principal/secundária do sistema operacional futura.

Qualquer número de build especificado pela decoração TargetOSVersion é avaliado somente quando a versão principal/secundária do sistema operacional do TargetOSVersion corresponde exatamente à versão atual do sistema operacional (ou AltPlatformInfo).  Se a versão atual do sistema operacional for maior que a versão do sistema operacional especificada pela decoração TargetOSVersion (OSMajorVersion,OSMinorVersion), a seção será considerada aplicável independentemente do número de build especificado. Da mesma forma, se a versão atual do sistema operacional for menor que a versão do sistema operacional especificada pela decoração TargetOSVersion, a seção não será aplicável.

Se o número de build for fornecido, a versão do sistema operacional e o BuildNumber da decoração TargetOSVersion deverão ser maiores que a versão do sistema operacional e o número de build do Windows 10 build 14310 em que essa decoração foi introduzida pela primeira vez. Versões anteriores do sistema operacional sem essas alterações (por exemplo, Windows 10 build 10240) não analisarão decorações desconhecidas, portanto, uma tentativa de direcionar essas compilações anteriores realmente impedirá esse sistema operacional de considerar a decoração válida.

Como o Windows processa decorações targetOSVersion

Quando você instala um pacote de driver em um dispositivo, o Windows segue estas etapas para processar as seções modelos INF em um arquivo INF:

  1. Se uma ou mais seções de Modelos INF tiverem a decoração TargetOS , o Windows selecionará a seção Modelos INF mais próxima dos atributos do sistema operacional host.

    Por exemplo, se uma seção Modelos INF tiver uma decoração TargetOS do ntx86.5.1, o Windows selecionará essa seção se o sistema operacional host estiver executando o Windows XP ou a versão posterior do Windows em um sistema baseado em x86.

    Da mesma forma, se uma seção modelos INF tiver uma decoração TargetOS de nt.6.0, o Windows selecionará essa seção se o sistema operacional host for o Windows Vista ou a versão posterior do Windows em qualquer plataforma de hardware com suporte.

    Se uma seção modelos INF tiver uma decoração TargetOS de nt.10.0... 14393, o Windows selecionará essa seção se o sistema operacional host estiver executando um Windows 10 compilação igual ou maior que 14393 em qualquer plataforma de hardware com suporte.

  2. Se nenhuma das seções modelos INF tiver uma decoração TargetOS que corresponda ao sistema operacional host, o Windows selecionará a seção Modelos que tem uma extensão de plataforma correspondente ou nenhuma extensão de plataforma.

    Por exemplo, se uma seção Modelos INF tiver uma extensão de plataforma ntx86, o Windows selecionará essa seção se o sistema operacional host for o Microsoft Windows 2000 ou versão posterior do Windows em um sistema baseado em x86.

  3. Se o Windows não encontrar uma seção de Modelos INF correspondente, ele não instalará esse pacote de driver no dispositivo.

Como as decorações de TargetOsVersion são resolvidas

Ao determinar as seções de Modelos INF aplicáveis, a avaliação é executada por linha na seção Fabricante do INF, em que, para uma determinada versão do sistema operacional, cada linha pode ter até uma seção aplicável.

O trecho inf abaixo mostra um exemplo em que [ExampleModelsSection_1.NTamd64.10.0... 17134] será selecionado em um número de build do Windows igual ou maior que 17134 e ambos [ExampleModelsSection_1.NTamd64.10.0... 17134] e [ExampleModelsSection_2.NTamd64.10.0... 22000] será selecionado em um número de build do Windows igual ou maior que 22000.

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

O trecho inf abaixo mostra um exemplo em que [ExampleModelsSection_1.NTamd64.10.0... 17134] será selecionado em um número de build do Windows igual ou maior que 17134 e [ExampleModelsSection_1.NTamd64.10.0... 22000] será selecionado em um número de build do Windows igual ou maior que 22000.

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

Seções de modelos INF de exemplo com decorações TargetOSVersion

Aplicar a uma versão específica do sistema operacional e posterior

Este trecho inf mostra como você pode especificar que um pacote de driver se aplica apenas a uma versão específica do sistema operacional e posterior.

[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 a apenas uma única versão do sistema operacional

Este trecho inf mostra como você pode especificar que um pacote de driver se aplica apenas a uma única versão do sistema operacional.

[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 várias versões do sistema operacional com configurações diferentes

Este trecho inf mostra como você pode especificar que um pacote de driver deve passar por diferentes instruções de instalação para versões diferentes do sistema operacional.

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