Diretiva de diferenciação de SKU
Com o Windows Server 2008 e o Windows Vista SP1, os INFs do driver de exibição na caixa foram modificados para incluir um novo valor que representava os drivers como Somente Cliente, o que significa que os drivers não seriam instalados em SKUs de servidor do Windows. Essa diretiva é necessária para todos os drivers de exibição no Windows 8.
No Windows Vista antes do SP1, os seguintes valores foram usados:
X86:
[Manufacturer]
%ATI% = ATI.Mfg
[ATI.Mfg]
In Vista SP1\Server 2008 the following values were used;
X86:
[Manufacturer]
%ATI% = ATI.Mfg,NTx86...1
[ATI.Mfg.NTx86...1]
X64:
[Manufacturer]
%ATI% = ATI.Mfg,NTamd64...1
[ATI.Mfg.NTamd64...1]
Para Windows 8, os mesmos valores usados para o Windows Vista SP1 e o Windows Server 2008 são usados.
Diferenciação de SKU para drivers de dispositivo
Os IHVs (fornecedores independentes de hardware) podem usar valores INF ProductType para indicar que um determinado INF é válido apenas para plataformas de servidor ou cliente. Isso funciona no Windows XP e em sistemas operacionais posteriores, e as alterações são relativamente simples de implementar.
Portanto, mesmo que exista um pacote de driver somente cliente no repositório de driver de um sistema de servidor, esse driver não poderá ser instalado.
O tópico Seção Fabricante do INF mostra como adicionar TargetOSVersion para filtrar instalações de dispositivo com base em vários critérios. Um desses critérios é ProductType, que pode ser usado para especificar uma categoria de SKUs nas quais o pacote pode ser instalado. Os seguintes valores são definidos para ProductType:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
Para qualquer arquitetura específica, um INF típico é decorado para instalar em qualquer SKU da seguinte maneira:
[Manufacturer]
%MSFT%=Models,amd64
[Models.NTamd64]
<models entries>
Para restringir esse INF para instalar somente no cliente, você precisa adicionar um ProductType de "1" à decoração. O número pode ser expresso como decimal ou hexadecimal. A documentação mostra hexadecimal, mas usarei decimal no exemplo para simplificar.
[Manufacturer]
%MSFT%=Models,amd64...1
; models section for workstation
[Models.NTamd64...1]
<models entries>
Para o servidor, a sintaxe o divide para instalar em um cliente e em um servidor sem formatação. Cada um deles tem seu próprio tipo de produto. Infelizmente, a sintaxe INF precisa que você especifique ambos para cobrir ambos os casos. Portanto, você precisa duplicar a seção de modelos inteiros para realmente cobrir a SKU do servidor:
[Manufacturer]
%MSFT%=Models,amd64...1amd64...3
; models section for client
[Models.NTamd64...1]
IHV_DeviceName.XXX = "Foo Generic Device Name (Microsoft Corporation - WDDM v1.2)"
IHV_DeviceName.YYY = "Foo Enthusiast Device Name (Microsoft Corporation - WDDM v1.2)"
<models entries>
; models section for Server
[Models.NTamd64...3]
IHV_DeviceName.XXX = "Foo Generic Name (Microsoft Corporation - WDDM v1.2)"
IHV_DeviceName.ZZZ = "Foo Datacenter Name (Microsoft Corporation - WDDM v1.2)"
<models entries>