Директива дифференциации номеров SKU
В Windows Server 2008 и Windows Vista с пакетом обновления 1 (SP1) встроенные in-box display driver inFs были изменены, чтобы включить новое значение, которое представляет драйверы как только клиент. Это означает, что драйверы не будут устанавливаться на серверных SKU Windows. Эта директива является обязательной для всех драйверов отображения в Windows 8.
В Windows Vista до с пакетом обновления 1 (SP1) использовались следующие значения:
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]
Для Windows 8 используются те же значения, которые использовались для Windows Vista с пакетом обновления 1 (SP1) и Windows Server 2008.
Дифференциация номеров SKU для драйверов устройств
Независимые поставщики оборудования (IHV) могут использовать значения PRODUCTType INF, чтобы указать, что данный INF-файл действителен только для серверных или клиентских платформ. Это работает в операционных системах Windows XP и более поздних версий, и изменения относительно просты в реализации.
Таким образом, даже если пакет драйверов только для клиента существует в хранилище драйверов серверной системы, этот драйвер не устанавливается.
В разделе Производителя INF показано, как добавить TargetOSVersion для фильтрации установок устройств на основе различных критериев. Одним из этих критериев является ProductType, который можно использовать для указания категории номеров SKU, на которых можно установить пакет. Для ProductType определены следующие значения:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
Для любой архитектуры типичный INF-код декорируется для установки на любой номер SKU следующим образом:
[Manufacturer]
%MSFT%=Models,amd64
[Models.NTamd64]
<models entries>
Чтобы ограничить установку этого INF-файла только на клиенте, необходимо добавить в оформление productType значение "1". Число может быть выражено как десятичное или шестнадцатеричное. В документации показаны шестнадцатеричные значения, но для простоты я буду использовать decimal в примере.
[Manufacturer]
%MSFT%=Models,amd64...1
; models section for workstation
[Models.NTamd64...1]
<models entries>
Для сервера синтаксис разбивает его на установку на клиенте и обычном сервере. Каждый из них имеет свой собственный тип продукта. К сожалению, в синтаксисе INF необходимо указать оба варианта, чтобы охватить оба варианта. Таким образом, необходимо дублировать весь раздел моделей, чтобы действительно охватить номер SKU сервера:
[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>