ABSCHNITT "INF ClassInstall32"

Achtung

Wenn Sie ein universelles Oder Windows-Treiberpaket erstellen, ist dieser Abschnitt ungültig. Weitere Informationen finden Sie unter Verwenden einer universellen INF-Datei und Erste Schritte mit Windows-Treibern.

Im Abschnitt ClassInstall32 wird eine neue Gerätesetupklasse für Geräte in der neuen Klasse installiert.

[ClassInstall32] | 
[ClassInstall32.nt] | 
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows) 
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows) 

AddReg=add-registry-section[,add-registry-section]...
[AddProperty=add-property-section[,add-property-section] ...]  (Windows Vista and later versions of Windows)
[Copyfiles=@filename | file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-section]...]
[DelProperty=del-property-section[,del-property-section] ...]  (Windows Vista and later versions of Windows)
[Delfiles=file-list-section[,file-list-section]...]
[Renfiles=file-list-section[,file-list-section]...]
[BitReg=bit-registry-section[,bit-registry-section]...]
[UpdateInis=update-ini-section[,update-ini-section]...]
[UpdateIniFields=update-inifields-section[,update-inifields-section]...]
[Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...]

Einträge

AddReg=add-registry-section[,add-registry-section]...
Verweist auf einen oder mehrere benannte Abschnitte, die klassenspezifische Werteinträge enthalten, die in die Registrierung geschrieben werden sollen. In der Regel wird dies verwendet, um der neuen Gerätesetupklasse mindestens einen Anzeigenamen zu geben, den andere Komponenten später aus der Registrierung abrufen und verwenden können, um installierte Geräte dieser neuen Geräteklasse zu öffnen oder einen beliebigen Eigenschaftenseitenanbieter für diese Gerätesetupklasse usw. zu "installieren".

Eine HKR-Spezifikation in einem beliebigen Add-Registry-Abschnitt legt den Registrierungsschlüssel fest, der Einstellungen für diese Klasse enthält. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise" .

Weitere Informationen finden Sie unter INF AddReg-Direktive.

AddProperty=add-property-section[,add-property-section]...
(Windows Vista und höhere Versionen von Windows) Verweist auf einen oder mehrere INF-Dateiabschnitte, die Geräteeigenschaften ändern, die für eine Gerätesetupklasse festgelegt sind. Sie sollten eine INF AddProperty-Direktive nur verwenden, um eine Gerätesetupklasseneigenschaft festzulegen, die in Windows Vista oder höheren Versionen von Windows-Betriebssystemen neu ist.

Für Geräteklasseneigenschaften, die zuvor unter Windows Server 2003, Windows XP oder Windows 2000 eingeführt wurden und die entsprechende Registrierungseintragswerte aufweisen, sollten Sie weiterhin eine INF AddReg-Direktive verwenden, um die Gerätesetupklasseneigenschaft festzulegen. Diese Richtlinien gelten für systemdefinierte Eigenschaften und benutzerdefinierte Eigenschaften.

Weitere Informationen zur Verwendung der AddProperty-Direktive finden Sie unter Verwenden der INF-AddProperty-Direktive und der INF DelProperty-Direktive.

Copyfiles=@filename | file-list-section[,file-list-section]...
Entweder gibt eine benannte Datei an, die vom Quellmedium in das Ziel kopiert werden soll, oder verweist auf einen oder mehrere benannte Abschnitte, in denen klassenrelevante Dateien auf dem Quellmedium für die Übertragung an das Ziel angegeben werden. Der Eintrag DefaultDestDir im Abschnitt DestinationDirs des INF gibt das Zielverzeichnis für jede klassenspezifische Einzeldatei an, die kopiert werden soll.

Weitere Informationen finden Sie unter INF CopyFiles-Direktive.

Hinweis

Vom System bereitgestellte INF-Dateien für Gerätesetupklassen verwenden diese Anweisung in diesem Abschnitt nicht.

DelReg=del-registry-section[,del-registry-section]...
Verweist auf einen oder mehrere benannte Abschnitte, in denen Werteinträge oder Schlüssel angegeben werden, die während der Installation des Klasseninstallationsprogramms aus der Registrierung entfernt werden sollen.

Wenn jedoch bereits eine bestimmte {SetupClassGUID} als installierte Klasse vorhanden ist, ignoriert der Systemsetupcode anschließend den Abschnitt ClassInstall32 eines beliebigen INF, der den gleichen GUID-Wert im Abschnitt Version angibt. Folglich kann ein INF kein vorhandenes Klasseninstallationsprogramm ersetzen oder sein Verhalten aus einem ClassInstall32-Abschnitt ändern.

Weitere Informationen finden Sie unter INF DelReg-Direktive.

DelProperty=del-property-section[,del-property-section]...
(Windows Vista und höhere Versionen von Windows) Verweist auf einen oder mehrere INF-Dateiabschnitte, in denen Geräteeigenschaften gelöscht werden, die für eine Gerätesetupklasse festgelegt sind. Sie sollten eine INF DelProperty-Direktive nur verwenden, um eine Gerätesetupklasseneigenschaft zu löschen, die in Windows Vista oder höheren Versionen von Windows-Betriebssystemen neu ist.

Für Geräteklasseneigenschaften, die zuvor unter Windows Server 2003, Windows XP oder Windows 2000 eingeführt wurden und die entsprechende Registrierungseintragswerte aufweisen, sollten Sie weiterhin eine INF DelReg-Direktive verwenden, um die Gerätesetupklasseneigenschaft zu löschen. Diese Richtlinien gelten für systemdefinierte Eigenschaften und benutzerdefinierte Eigenschaften.

Weitere Informationen zur Verwendung der DelProperty-Direktive finden Sie unter Verwenden der INF-AddProperty-Direktive und der INF DelProperty-Direktive.

Delfiles=file-list-section[,file-list-section]...
Verweist auf einen oder mehrere benannte Abschnitte, in denen zuvor klassenrelevante Dateien auf dem Ziel zum Löschen angegeben wurden.

Weitere Informationen finden Sie unter INF DelFiles-Direktive.

Renfiles=file-list-section[,file-list-section]...
Verweist auf einen oder mehrere benannte Abschnitte, in denen klassenrelevante Dateien aufgeführt sind, die auf dem Ziel umbenannt werden sollen.

Weitere Informationen finden Sie unter INF RenFiles-Direktive.

BitReg=bit-registry-section[,bit-registry-section]...
Ist in diesem Abschnitt gültig, wird aber fast nie verwendet.

Weitere Informationen finden Sie unter INF BitReg-Direktive.

UpdateInis=update-ini-section[,update-ini-section]...
Ist in diesem Abschnitt gültig, wird aber fast nie verwendet.

Weitere Informationen finden Sie unter INF UpdateInis-Direktive.

UpdateIniFields=update-inifields-section[,update-inifields-section]...
Ist in diesem Abschnitt gültig, wird aber fast nie verwendet.

Weitere Informationen finden Sie unter INF UpdateIniFields-Direktive.

Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
Ist in diesem Abschnitt gültig, wird aber fast nie verwendet.

Weitere Informationen finden Sie unter INF UpdateIniFields-Direktive.

Hinweise

Sie sollten nur einen ClassInstall32-Abschnitt in eine INF-Datei des Geräts einschließen, um eine neue benutzerdefinierte Gerätesetupklasse zu installieren. INF-Dateien für Geräte in einer installierten Klasse, unabhängig davon, ob es sich um eine vom System bereitgestellte Gerätesetupklasse oder eine benutzerdefinierte Klasse handelt, sollten keinen ClassInstall32-Abschnitt enthalten. Da das System einen ClassInstall32-Abschnitt nur verarbeitet, wenn eine Klasse noch nicht installiert ist, können Sie einen ClassInstall32-Abschnitt nicht verwenden, um die Einstellungen für eine bereits installierte Klasse neu zu installieren oder zu ändern. Insbesondere können Sie keinen ClassInstall32-Abschnitt verwenden, um ein Klassen-Co-Installationsprogramm oder einen Klassenfiltertreiber für eine bereits installierte Klasse hinzuzufügen. Informationen zum Installieren von Co-Installern und Filtertreibern finden Sie unter Schreiben eines Co-Installers und Installieren eines Filtertreibers.

In der Regel enthält ein ClassInstall32-Abschnitt eine oder mehrere AddReg-Anweisungen zum Hinzufügen von Einträgen unter einem systemseitig bereitgestellten SetupClassGUID-Unterschlüssel in der Registrierung. Diese Einträge können einen klassenspezifischen "Anzeigenamen", einen Klasseninstallationspfad, ein Klassensymbol, einen Eigenschaftenseitenanbieter usw. enthalten.

Mit Ausnahme von AddReg und CopyFiles werden die anderen hier gezeigten Direktiven selten in einem ClassInstall32-Abschnitt verwendet.

Um eine Multiplattformverteilung von Treiberdateien zu unterstützen, erstellen Sie plattformspezifische ClassInstall32-Abschnitte . Beispielsweise suchen alle System-SetupAPI-Funktionen, die einen ClassInstall32-Abschnitt verarbeiten, zuerst nach einem ClassInstall32.ntx86-Abschnitt auf einer x86-Plattform und untersuchen nur einen nicht ergänzten ClassInstall32-Abschnitt , wenn sie keinen ClassInstall32.ntx86-Abschnitt finden. Weitere Informationen zur Verwendung der systemdefinierten Erweiterungen .nt, .ntx86, .ntia64, .ntamd64, .ntarm und .ntarm64 finden Sie unter Erstellen von INF-Dateien für mehrere Plattformen und Betriebssysteme.

Hinweis

Der Name des Abschnitts ClassInstall32 wird auch für Installationen auf 64-Bit-Plattformen verwendet.

Ab Windows 2000 ist jedes installierte Gerät einer Gerätesetupklasse zugeordnet. Wenn das INF für ein zu installierende Gerät keinem neuen Geräteklasseninstallationsprogramm zugeordnet ist oder die ClassGUID= -Spezifikation im Abschnitt Version nicht mit einer systemdefinierten Setupklassen-GUID übereinstimmt, wird dieses Gerät der Gerätesetupklasse mit dem Namen "Unbekannt" zugeordnet.

Der INF für jeden Geräteklasseninstaller verfügt in der Regel über eine AddReg-Direktive im Abschnitt ClassInstall32 , um mindestens einen benannten Abschnitt zu definieren, der einen Anzeigenamen für seinen Gerätetyp erstellt. Der Setupcode erstellt automatisch einen SetupClassGUID-Schlüssel an der entsprechenden Stelle in der Registrierung aus dem Wert, der für den Eintrag ClassGUID= im Abschnitt Version des INF angegeben wird, wenn das erste Gerät dieser (neuen) Setupklasse installiert wird.

Das INF kann die Add-Registry-Abschnitte verwenden, auf die im Abschnitt ClassInstall32 verwiesen wird, um einen Eigenschaftenseitenanbieter anzugeben und die Kontrolle darüber auszuüben, wie seine Geräteklasse in der Benutzeroberfläche behandelt wird.

Ein solcher klassenspezifischer Add-Registry-Abschnitt hat die folgende allgemeine Form:

[SetupClassAddReg]
 
HKR,,,,%DevClassName% ; device-class friendly name 
[HKR,,Installer32,,"class-installer.dll,class-entry-point"] 
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
HKR,,Icon,,"icon-number" 
[HKR,,SilentInstall,,1]
[HKR,,NoInstallClass,,1]
[HKR,,NoDisplayClass,,1]

Das System verwendet das angegebene Symbol, um ihren Installer für den Benutzer darzustellen.

  • Wenn der Symbolwert positiv ist, stellt er einen Ressourcenbezeichner für eine Ressource dar. Die Ressource wird aus der DLL des Klasseninstallationsprogramms extrahiert, wenn der Installer32-Schlüssel angegeben ist, oder aus der Dll der Eigenschaftenseite, wenn der Schlüssel EnumPropPages32 angegeben ist. Der Wert "0" stellt das erste Symbol in der DLL dar. Der Wert "1" ist reserviert.
  • Wenn der Symbolwert negativ ist, ist der absolute Wert der Ressourcenbezeichner des Symbols in SetupApi.DLL.

Das Festlegen der vordefinierten booleschen Werteinträge SilentInstall, NoDisplayClass und NoInstallClass in einem klassenspezifischen Registrierungsschlüssel hat die folgenden Auswirkungen:

  • Durch festlegen von SilentInstall werden Installationsprogramme angewiesen, keine Popupnachrichten an den Benutzer zu senden, die beim Installieren von Geräten dieser Klasse eine Antwort erfordern, unabhängig davon, ob sie in den Abschnitten DDInstall der INF-Datei des Klasseninstallationsprogramms oder in separaten INF-Dateien für später installierte Geräte angegeben sind, die sich selbst für diese Klasse deklarieren, indem sie die gleiche ClassGuid={ClassGUID}-Spezifikation in den jeweiligen Versionsabschnitten festlegen. Beispielsweise legen die Systemklasseninstaller von CD-ROM- und Datenträgergeräten und das Installationsprogramm für parallele Portklassen des Systems SilentInstall in ihren jeweiligen Registrierungsschlüsseln fest.

    Wenn ein klassenspezifisches Installationsprogramm erfordert, dass der Computer für jedes Gerät neu gestartet wird, das es installiert, kann der klassenspezifische Add-Registry-Abschnitt in seinem INF nicht diesen Werteintrag enthalten.

  • Wenn Sie NoDisplayClass festlegen, wird die vom Benutzer sichtbare Anzeige aller Geräte dieser Klasse durch Geräte-Manager unterdrückt. Beispielsweise legen die Systemklasseninstaller für Drucker und für Netzwerktreiber (einschließlich Clients, Dienste und Protokolle) NoDisplayClass in ihren jeweiligen Registrierungsschlüsseln fest.

  • Die Einstellung NoInstallClass gibt an, dass kein Gerät dieses Typs jemals eine manuelle Installation durch einen Endbenutzer erfordert. Beispielsweise legen die Systemklasseninstaller für ausschließlich Plug & Play (PnP)-Geräte NoInstallClass in ihren jeweiligen Registrierungsschlüsseln fest.

Ein ClassInstall32-Abschnitt kann AddReg-Anweisungen enthalten, um deviceType, DeviceCharacteristics und Security für Geräte der Setupklasse festzulegen. Weitere Informationen finden Sie in der INF AddReg-Direktive .

Beispiele

Dieses Beispiel zeigt den Abschnitt ClassInstall32 zusammen mit dem benannten Abschnitt, auf den er mit der AddReg-Direktive verweist.

[ClassInstall32] 
AddReg=example_class_addreg

[example_class_addreg]
HKR,,,,%ClassName%
HKR,,Icon,,"-1"

Im Gegensatz dazu wird in diesem Beispiel ein klassenspezifischer Eigenschaftenseitenanbieter eingerichtet. Dieser INF legt auch die Werteinträge SilentInstall und NoInstallClass im Klassenschlüssel auf TRUE (1) fest.

[example_class_addreg]
HKR,,,,%ClassName%
HKR,,EnumPropPages32,,"ExampleBinary.Dll,ExamplePropPageProvider"
HKR,,SilentInstall,,1
HKR,,NoInstallClass,,1
HKR,,Icon,,"101"

Weitere Informationen

Addproperty

AddReg

BitReg

CopyFiles

DDInstall

DelFiles

DelProperty

DelReg

Ini2Reg

Modelle

RenFiles

SetupDiBuildClassInfoList

UpdateIniFields

UpdateInis

Version