SKU-Unterscheidungsdirektive
Mit Windows Server 2008 und Windows Vista SP1 wurden die INFs des im Lieferumfang enthaltenen Anzeigetreibers geändert, um einen neuen Wert zu enthalten, der die Treiber als Nur Client darstellt, was bedeutet, dass die Treiber nicht auf Server-SKUs von Windows installiert werden. Diese Anweisung ist für alle Anzeigetreiber in Windows 8 erforderlich.
In Windows Vista vor SP1 wurden die folgenden Werte verwendet:
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]
Für Windows 8 werden dieselben Werte verwendet, die für Windows Vista SP1 und Windows Server 2008 verwendet wurden.
SKU-Differenzierung für Gerätetreiber
Unabhängige Hardwareanbieter (Independent Hardware Vendors, IHVs) können ProductType-INF-Werte verwenden, um anzugeben, dass ein bestimmter INF nur für Server- oder Clientplattformen gültig ist. Dies funktioniert unter Windows XP und höheren Betriebssystemen, und die Änderungen sind relativ einfach zu implementieren.
Selbst wenn ein reines Clienttreiberpaket im Treiberspeicher eines Serversystems vorhanden ist, kann dieser Treiber daher nicht installiert werden.
Im Thema INF-Herstellerabschnitt wird gezeigt, wie Sie TargetOSVersion hinzufügen, um Geräteinstallationen nach verschiedenen Kriterien zu filtern. Eines dieser Kriterien ist ProductType, mit dem eine Kategorie von SKUs angegeben werden kann, auf der das Paket installiert werden kann. Die folgenden Werte werden für ProductType definiert:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
Für jede architektur ist ein typischer INF so eingerichtet, dass er auf jeder SKU wie folgt installiert wird:
[Manufacturer]
%MSFT%=Models,amd64
[Models.NTamd64]
<models entries>
Damit dieser INF nur auf dem Client installiert werden kann, müssen Sie der Dekoration einen ProductType von "1" hinzufügen. Die Zahl kann als dezimal oder hexadezimal ausgedrückt werden. Die Dokumentation zeigt hexadezimal, aber ich verwende im Beispiel der Einfachheit halber dezimal.
[Manufacturer]
%MSFT%=Models,amd64...1
; models section for workstation
[Models.NTamd64...1]
<models entries>
Für Server unterteilt die Syntax die Installation auf einem Client und einem einfachen Server. Jede dieser Elemente verfügt über einen eigenen Produkttyp. Leider müssen Sie für die INF-Syntax beides angeben, um beide Fälle abzudecken. Daher müssen Sie den gesamten Modellabschnitt duplizieren, um die Server-SKU wirklich abzudecken:
[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>