Freigeben über


Entfernen von Co-Installern aus Treiberpaketen

Vorsicht

Ab Januar 2023 werden Treiberpakete, die einen Co-Installer enthalten, nicht mehr vom Hardware Developer Center Portalsigniert. Details zu den Anforderungen finden Sie unter Spezifikationen und Richtlinien zum Windows-Hardware-Kompatibilitätsprogramm, insbesondere auf die Richtlinien der Version 22H2, Abschnitt Device.DevFund.INF.Declarative.

Diese Seite befasst sich mit häufigen Gründen für die Anwesenheit von Co-Installationsprogrammen in einem Treiberpaket und bietet Mechanismen zur Bereitstellung von Möglichkeiten, um dieselbe Aufgabe ohne ein Co-Installationsprogramm zu erfüllen.

WDF- und WinUSB-Co-Installationsprogramme

Der WDF-Co-Installer und der WinUSB-Co-Installer sind auf keinem System unter Windows 10 und höher erforderlich. Die WDF-Co-Installationsprogramm-Verweise können ohne zusätzliche Arbeit entfernt werden. Die WinUSB-Co-Installationsprogramm-Verweise können entfernt werden, und WinUSB sollte mithilfe der Include- und Needs-Direktiven aus dem Treiberpaket-INF referenziert werden.

WinUSB-Treiberpaketanleitung

Installieren von Software, die eine Benutzeroberfläche bereitstellt

Statt eine Anwendung während einer Installation zu starten, stellen Sie eine Anwendung für die universelle Windows-Plattform bereit, die mithilfe einer AddSoftware-Direktive aus einem DDInstall.Software-Abschnitt des Treiberpakets -NF installiert wird.

Weitere Informationen finden Sie unter Koppeln eines Treibers mit einer Universelle Windows-Plattform-App (UWP). Eine AddSoftware-Direktive wird unter Windows 10, Version 1703 und höheren Versionen von Windows unterstützt.

Weitere Details finden Sie, wie unten aufgeführt, unter Installation der zugehörigen Software.

Festlegen von Gerätefreundlichen Namen

INF-Datei

Ein Treiberpaket-INF kann den freundlichen Namen des Geräts auf folgende Weise festlegen:

[DDInstall.HW]
AddReg = FriendlyName_AddReg

[FriendlyName_AddReg]
HKR,,FriendlyName,, "Device Friendly Name"

Laufzeit

Der Anzeigename kann vom Treiber während der Phase Start IRP oder der Phase PrepareHardware durch Festlegen der Eigenschaft DEVPKEY_Device_FriendlyName mit einer der folgenden APIs festgelegt werden:

Andere Geräteeinstellungen/Konfigurationen

Wenn möglich, kann der Treiber die Geräteeinstellungen und -konfiguration innerhalb der Phase Start IRP- oder der Phase PrepareHardware ändern. Beim Ändern des Zustands zur Laufzeit sollte der Treiber die Anforderungen für die Treiberpaketisolation befolgen. Diese Anforderungen enthalten Richtlinien für die Treiberkonfiguration und das Zustandslayout und helfen dabei, den Treiber zukunftssicher zu machen, indem er widerstandsfähiger gegen externe Änderungen wird, einfacher zu aktualisieren und unkomplizierter zu installieren ist.

Bei Einstellungen und Konfigurationen, die nicht innerhalb des Treibers selbst festgelegt werden können, kann ein Treiberpaket auch Laufzeitkomponenten für den Benutzermodus enthalten, die die Einstellungen und Konfiguration ändern. Dies kann eine benutzerorientierte App oder ein Win32-Dienst sein, der die Konfiguration aktualisiert. Informationen zum Einschließen von Benutzermodus-Software für die Verwendung mit einem Gerät finden Sie unter Verwenden einer INF-Komponentendatei.

Wenn eine persistente Komponente wie z. B. ein Dienst verwendet wird, stellen Sie sicher, dass ihre Funktionalität erforderlich ist und nicht auf weniger ressourcenintensive Weise ausgeführt werden kann, z. B. innerhalb eines Treiberpakets INF oder innerhalb des Treibers selbst. Informationen zum Sicherstellen, dass ein Dienst nur ausgeführt wird, wenn relevante Geräte verbunden sind, finden Sie unter Service Triggers, Win32-Dienste, die mit Geräteninteragieren, und Registrieren für Geräteschnittstellenbenachrichtigungen. Der Dienst muss auch die neuesten Anforderungen erfüllen, z. B. den API Validator bestehen.

Installieren der zugehörigen Software

Der „Componentized”-Teil der DCH-Treiberanforderungen führte ein Konzept namens „SoftwareComponent” ein, das als Mechanismus dient, um die Installation eines Gerätetreibers von der dazugehörigen Software zu entkoppeln. Wenn eine Softwarekomponente von der INF erstellt wird, wird automatisch ein untergeordnetes Gerät erstellt, das der Softwarekomponente zugeordnet ist. Dieses untergeordnete Gerät ist zum Zweck der Installation der Software vorhanden, die dem übergeordneten Gerät zugeordnet ist. Diese Software kann unabhängig vom Hauptgerät und Treiber installiert und aktualisiert werden.

Innerhalb eines SoftwareComponent-Treiberpakets-INF verwendet der empfohlene Mechanismus zum Installieren von Software eine AddSoftware-Direktive. Dadurch wird der Download und die Installation von Software aus dem Windows Store ausgelöst.

Abhängigkeiten über Treiber und Geräte hinweg

Abhängigkeiten der Gerätestart-/Aufzählungsreihenfolge

Soweit möglich, sollten Geräteübergreifende Abhängigkeiten oder Startbestellungsanforderungen vermieden werden.

Für ACPI-auflistete Geräte kann das Abhängigkeitsobjekt (_DEP) in der ACPI-Firmware verwendet werden, um die Startreihenfolge von Geräten zu erzwingen. Weitere Informationen finden Sie unter Device Management Namespace.

Treiber können auf die IRP_MN_QUERY_DEVICE_RELATIONS IRP reagieren, um Beziehungen zwischen Geräten zu definieren, z. B. Entfernungsbeziehungen. Für weiterführende Informationen, siehe IRP_MN_QUERY_DEVICE_RELATIONS.

Installationsabhängigkeiten für das Treiberpaket

Die CopyInf-Direktive kann verwendet werden, um während des gleichen Installations-API-Aufrufs wie ein anderer Treiber auch ein zusätzliches Treiberpaket zu installieren. Das an die Installations-API übergebene Treiberpaket wird installiert, bevor copyInf-referenzierte Treiberpakete installiert werden. Treiberpakete, auf die von CopyInf verwiesen wird, sind jedoch nicht garantiert, dass sie in einer bestimmten Reihenfolge installiert werden.

Konfigurieren von Komponenten verschiedener Anbieter, die in einem einzelnen Treiberpaket gebündelt sind

Treiberpakete unterstützen einen Typ des Treiberpakets-INF, der als Erweiterungs-INF bezeichnet wird. Dies ist eine INF-Datei, die speziell dafür konzipiert ist, die Funktionalität eines Basis-Treiberpaket-INFs zu erweitern und zu ergänzen. Eine Erweiterung stellt möglicherweise nicht den Funktionstreiber für das Gerät bereit, sondern kann andernfalls andere Direktiven verwenden oder andere Einstellungen für ein Gerät schreiben. Während einer Treiberinstallation wird ein einzelnes Basistreiberpaket INF mithilfe der Treiberrangfolge ausgewählt, um die Funktionalität für das Gerät bereitzustellen, und anschließend werden alle erforderlichen Erweiterungs-INFs für das Gerät ausgewählt. Weitere Informationen finden Sie unter Verwenden einer INF-Datei mit Erweiterung.

Ein gängiges Paradigma für die Verwendung von Erweiterungstreiberpaket-INFs besteht darin, dass der Hardwarehersteller das Basistreiberpaket-INF bereitstellt und ein OEM, der dieses Teil in einem System liefert, ein Erweiterungstreiberpaket-INF erstellt, das es für dieses System anpasst.

Installieren/Orchestrieren von Firmwareupdates

Je nach Art des aktualisierten Geräts werden verschiedene Firmwareupdatemechanismen empfohlen. Jede der folgenden Optionen kann verwendet werden, um ein Firmwareupdate über Windows Update zu versenden und zu installieren.

Nicht wechselbar

Die UEFI-Firmwareupdateplattform wurde entwickelt, um Komponenten eines Systems zu aktualisieren, die nicht entfernt werden können, z. B. die Systemfirmware. Weitere Informationen finden Sie unter UEFI Firmware Update Platform.

Abnehmbar

Für Wechselmedien wie HID- oder USB-Geräte ermöglicht das CFU-Modell sichere Firmwareupdates. Weitere Informationen finden Sie unter Komponenten-Firmware-Update.

Benutzerdefinierte Implementierung

Alternativ kann ein benutzerdefinierter Treiber geschrieben werden, der die Firmware des Geräts nach Ermessen des Treibers aktualisiert. Weitere Informationen finden Sie unter Benutzerdefinierte Firmwareaktualisierungstreiber.