INF-DDInstall.CoInstallers-Abschnitt

Achtung

Ab Windows 11 Version 22H2 ist ein Treiberpaket, das diesen Abschnitt verwendet, nicht mehr für eine Signatur vom Hardware Developer Center geeignet.

Universelle Treiberpakete und Windows-Treiber können diesen Abschnitt nicht verwenden.

Dieser optionale Abschnitt registriert einen oder mehrere gerätespezifische Co-Installer, die auf den Distributionsmedien mitgeliefert werden, um die Vorgänge der vorhandenen Installer für Geräteklassen zu ergänzen.

[install-section-name.CoInstallers] |
[install-section-name.nt.CoInstallers] | 
[install-section-name.ntx86.CoInstallers] | 
[install-section-name.ntia64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntamd64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntarm.CoInstallers] | (Windows 8 and later versions of Windows)
[install-section-name.ntarm64.CoInstallers] (Windows 10 version 1709 and later versions of Windows)
  
AddReg=add-registry-section[,add-registry-section]... 
CopyFiles=@filename | file-list-section[,file-list-section]...
[Include=filename.inf[,filename2.inf]...]
[Needs=inf-section-name[,inf-section-name]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-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]...]
... 

Entries

AddReg=add-registry-section[,add-registry-section]...
Verweist auf einen oder mehrere von INF-Autor*innen definierte Add-registry-sections, die Registrierungsinformationen über die mitgelieferten Installer speichern.

Ein HKR, der in einem solchen add-registry-section angegeben ist, bezeichnet den „Softwareschlüssel“-Registrierungspfad des zu installierenden Geräts. Daher wird für einen gerätespezifischen Co-Installer ein CoInstallers32-Werteintrag in diesen für Benutzer*innen zugänglichen „Software“-Schlüssel pro Gerät/Treiber geschrieben (oder geändert).

Für einen klassenspezifischen Co-Installer registriert er die neuen Co-Installer, indem er den Inhalt der entsprechenden ..CoDeviceInstallers\SetupClassGUID-Unterschlüssel ändert. Der Pfad zu den entsprechenden Unterschlüsseln der Registrierung SetupClassGUID muss in den referenzierten add-registry-Abschnitten explizit angegeben werden.

Weitere Informationen finden Sie unter INF AddReg Direktive.

CopyFiles=@filename | file-list-section*[,file-list-section]...
Überträgt die Co-Installer-Quelldateien auf das Ziel auf dem Zielcomputer, in der Regel durch Verweis auf einen oder mehrere von INF-Autor*innen definierte file-list-sections an anderer Stelle in der INF-Datei. Ein solcher Dateilistenabschnitt gibt die Co-Installer-Dateien an, die vom Quellmedium in das Zielverzeichnis auf dem Zielcomputer kopiert werden sollen.

Allerdings verwenden System-INF-Dateien, die Co-Installer installieren, diese Direktive niemals in einem DDInstall.CoInstallers-Abschnitt.

Weitere Informationen finden Sie unter INF CopyFiles Direktive.

Include=filename.inf[,filename2.inf]...
Gibt eine oder mehrere vom System bereitgestellte INF-Dateien an, die Abschnitte enthalten, die zur Installation der Co-Installer für dieses Gerät oder die Geräteeinrichtungsklasse benötigt werden. Eine INF-Datei mit diesem Eintrag sollte normalerweise Needs festlegen.

Needs=inf-section-name[,inf-section-name]...
Gibt die bestimmten Abschnitte an, die bei der Installation dieses Geräts verarbeitet werden müssen. In der Regel ist ein solcher benannter Abschnitt ein DDInstall.CoInstallers-Abschnitt innerhalb einer vom System bereitgestellten INF-Datei, die in einem Include-Eintrag aufgeführt ist. Es kann aber auch jeder beliebige Abschnitt sein, der in einem solchen DDInstall.CoInstallers-Abschnitt der eingebundenen INF-Datei referenziert wird.

DelFiles=file-list-section[,file-list-section]...
Verweist auf einen Dateilistenabschnitt, in dem Dateien angegeben sind, die aus dem Ziel entfernt werden sollen. Diese Direktive wird nur selten verwendet.

Weitere Informationen finden Sie unter INF-DelFiles-Direktive.

RenFiles=file-list-section[,file-list-section]...
Verweist auf einen Dateilistenabschnitt, der angibt, welche Dateien auf dem Ziel umbenannt werden sollen, bevor die Quelldateien des Co-Installers auf das Ziel kopiert werden. Auch diese Direktive wird selten verwendet.

Weitere Informationen finden Sie unter INF RenFiles Direktive.

DelReg=del-registry-section[,del-registry-section]...
Verweist auf einen oder mehrere INF-Autor*innen definierte delete-registry-sections. Ein solcher Abschnitt gibt veraltete Registrierungsinformationen über die Co-Installer für eine frühere Installation der gleichen Geräte an, die aus der Registrierung entfernt werden sollten. Ein HKR, der in einem solchen Abschnitt zum Löschen der Registrierung angegeben wird, bezeichnet denselben Registrierungsunterschlüssel, der bereits für den Eintrag AddReg beschrieben wurde. Diese Direktive wird selten in einem DDInstall.CoInstallers-Abschnitt verwendet.

Weitere Informationen finden Sie unter INF DelReg Direktive.

BitReg=bit-registry-section[,bit-registry-section]...
Dieser Eintrag ist in diesem Abschnitt gültig, wird aber fast nie verwendet. Ein HKR, der in einem solchen Bit-Registry-Abschnitt angegeben wird, bezeichnet denselben Registrierungs-Unterschlüssel, der bereits für den AddReg-Eintrag beschrieben wurde.

Weitere Informationen finden Sie unter INF BitReg Direktive.

UpdateInis=update-ini-section[,update-ini-section]...
Dieser Eintrag 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]...
Dieser Eintrag 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]...
Dieser Eintrag ist in diesem Abschnitt gültig, wird aber fast nie verwendet.

Weitere Informationen finden Sie unter INF Ini2Reg Direktive.

Hinweise

Auf den angegebenen DDInstall-Abschnitt muss in einem geräte-/modellspezifischen Eintrag im Abschnitt Models der INF-Datei pro Hersteller verwiesen werden.

Wenn eine INF einen DDInstall.Coinstallers-Abschnitt enthält, muss es einen für jeden plattformspezifischen und nicht plattformspezifischen DDInstall-Abschnitt geben. Wenn eine INF beispielsweise einen [install-section-name.ntx86]-Abschnitt und einen [install-section-name]-Abschnitt enthält und gerätespezifische Co-Installer registriert, dann muss die INF sowohl einen [install-section-name. ntx86.Coinstallers]-Abschnitt und einen [install-section-name.Coinstallers]-Abschnitt enthalten. Weitere Informationen über die Verwendung der systemdefinierten Erweiterungen .nt, .ntx86, .ntia64, .ntamd64, .ntarm und .ntarm64 finden Sie unter Erstellen von INF-Dateien für mehrere Plattformen und Betriebssysteme.

Jede Direktive in einem DDInstall.CoInstallers-Abschnitt kann mehr als einen von INF-Autor*innen definierten Abschnittsnamen referenzieren. Allerdings muss jeder weitere benannte Abschnitt durch ein Komma (,) vom nächsten getrennt werden.

Jeder durch eine Direktive erstellte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und den allgemeinen Regeln für die Definition von Abschnittsnamen entsprechen. Weitere Informationen zu diesen Regeln finden Sie unter Allgemeine Syntaxregeln für INF-Dateien.

Ein Co-Installer ist eine Win32-DLL, die in der Regel zusätzliche Konfigurationsinformationen in die Registrierung schreibt oder andere Installationsaufgaben durchführt, für die dynamisch generierte, systemspezifische Informationen erforderlich sind, die beim Erstellen einer INF-Datei nicht verfügbar sind. Ein gerätespezifischer Co-Installer ergänzt die Installationsvorgänge entweder des Installers des Betriebssystems oder des Installers der entsprechenden Klasse, wenn das Gerät installiert wird.

Weitere Informationen über das Schreiben und Verwenden von Co-Installern finden Sie unter Schreiben eines Co-Installers.

Installieren von Co-Installer-Images

Alle Co-Installer-Dateien müssen in das Verzeichnis %SystemRoot%\system32 kopiert werden. Wie bei jedem INF CopyFiles-Vorgang wird das Ziel explizit für einen benannten file-list-section im DestinationDirs-Abschnitt der INF-Datei durch den dirid-Wert 11 oder durch Angabe dieses dirid-Wertes für den DefaultDestDir-Eintrag gesteuert.

Registrierung gerätespezifischer Co-Installer

Die Registrierung eines oder mehrerer gerätespezifischer Co-Installer erfordert das Hinzufügen eines Werteintrags des Typs REG_MULTI_SZ in der Registrierung. Geben Sie einen add-registry-section an, auf den die Direktive AddReg verweist, indem Sie die folgende allgemeine Form verwenden:

[DDInstall.CoInstallers_DeviceAddReg]
 
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
   [,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
      [,DevSpecific2EntryPoint]"...] 

Der HKR-Eintrag wird als einzelne Zeile in der INF-Datei aufgeführt, und jede mitgelieferte gerätespezifische Co-Installer-DLL muss einen eindeutigen Namen haben. Nachdem die aufgelisteten Co-Installer registriert sind, ruft der Installer des Systems sie bei jedem weiteren Schritt des Installationsprozesses für dieses Gerät auf.

Wenn die optionale DevSpecificEntryPoint weggelassen wird, wird der Standardname der CoDeviceInstall-Routine als Einstiegspunkt der Co-Installer-DLL verwendet.

Weitere Informationen finden Sie unter Registrieren eines gerätespezifischen Co-Installers.

Registrierung von gerätespezifischen Co-Installern

Um der Registrierung einen Werteintrag (und einen Unterschlüssel der Setup-Klasse, falls noch nicht vorhanden) für einen oder mehrere Co-Installer der Geräteklasse hinzuzufügen, hat ein add-registry-section, auf den die Direktive AddReg verweist, die folgende allgemeine Form:

[DDInstall.CoInstallers_ClassAddReg]
 
HKLM,System\CurrentControlSet\Control
    \CoDeviceInstallers,{SetupClassGUID},
       0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]" 
 ...

Jeder Eintrag in einem solchen add-registry-section wird als einzelne Zeile in der INF-Datei aufgeführt, und jede mitgelieferte Klassen-Co-Installer-DLL muss einen eindeutigen Namen haben. Wenn die mitgelieferten Co-Installer für mehr als eine Geräte-Setup-Klasse verwendet werden sollen, kann dieser Add-registry-section mehr als einen Eintrag enthalten, jeweils mit dem entsprechenden SetupClassGUID-Wert.

Ein solcher zusätzlicher Co-Installer für eine Geräteklasse darf keine bereits registrierten Co-Installer für einen bestehenden Klassen-Installer ersetzen. Daher muss der Klassen-Co-Installer einen eindeutigen Namen haben und der übergebene Wert vom Typ REG_MULTI_SZ muss (wie durch 8 im Flags-Wert 0x0010008 angegeben) an die klassenspezifischen Co-Installer-Einträge angehängt werden, die gegebenenfalls bereits im Unterschlüssel {SetupClassGUID} vorhanden sind.

Hinweis

Die SetupAPI-Funktionen fügen niemals eine doppelte DevClssCoInstall.dll an einen Werteintrag an, wenn ein Co-Installer gleichen Namens bereits registriert ist.

Die INF für einen zusätzlichen Co-Installer der Geräteklasse kann durch eine Rechtsklick-Installation oder durch einen Aufruf von SetupInstallFromInfSection durch eine Geräteinstallationsanwendung aktiviert werden.

Beispiele

Dieses Beispiel zeigt den Abschnitt DDInstall.CoInstallers für serielle IrDA-Netzwerkadapter. Die vom System bereitgestellte INF für diese (seriellen) IrDA-NICs liefert einen Co-Installer für den Installer der IrDA-Klasse des Systems.

; DDInstall section
[PNP.NT]
AddReg=ISIR.reg, Generic.reg, Serial.reg
PromptForPort=0     ; This is handled by IRCLASS.DLL
LowerFilters=SERIAL ; This is handled by IRCLASS.DLL
BusType=14
Characteristics=0x4 ; NCF_PHYSICAL 

; ... PNP.NT.Services section omitted here
[PNP.NT.CoInstallers]
AddReg = ISIR.CoInstallers.reg 
; ...

[IRSIR.reg]
HKR, Ndi, HelpText, 0, %IRSIR.Help%
HKR, Ndi, Service, 0, "IRSIR"
HKR, Ndi\Interfaces, DefUpper, 0, "ndisirda"
HKR, Ndi\Interfaces, DefLower, 0, "nolower"
HKR, Ndi\Interfaces, UpperRange, 0, "ndisirda"
HKR, Ndi\Interfaces, LowerRange, 0, "nolower"

[Generic.reg]
HKR,,InfraredTransceiverType,0,"0"

[Serial.reg]
HKR,,SerialBased,0, "0"

[ISIR.CoInstallers.reg]
HKR,,CoInstallers32,0x00010000,"IRCLASS.dll,IrSIRClassCoInstaller"

; ... Services and Event Log registry sections omitted here
[Strings]
; ...
IRSIR.Help = "An IrDA serial infrared device is a built-in COM port or 
external transceiver which transmits infrared pulses. This NDIS 
miniport driver installs as a network adapter and binds to the FastIR 
protocol."

Der vorhergehende Abschnitt PNP.NT.CoInstallers verweist nur auf einen Co-Installer-spezifischen add-registry-Abschnitt.

Er enthält keine Direktive CopyFiles, da diese vom System bereitgestellte INF einen Satz von IrDA-Netzwerkgeräten installiert. Wie alle System-INF-Dateien verwendet auch diese INF-Datei den Eintrag LayoutFile in ihrem Abschnitt Version, um die Co-Installer-Datei an das Ziel zu übertragen.

Jeder DDInstall.CoInstallers-Abschnitt in einer INF, die von einem IHV oder OEM bereitgestellt wird, erfordert eine CopyFiles-Direktive und außerdem SourceDisksNames- und SourceDisksFiles-Abschnitte.

Siehe auch

AddReg

BitReg

CopyFiles

DDInstall

DelFiles

DelReg

DestinationDirs

Ini2Reg

RenFiles

SourceDisksFiles

SourceDisksNames

UpdateIniFields

Version