Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie die Firmware eines wechselbaren oder intern verbauten Geräts mithilfe des Windows Update (WU)-Diensts aktualisieren. Informationen zum Aktualisieren der Systemfirmware finden Sie auf der Windows UEFI-Firmwareupdateplattform.
Um die Gerätefirmware mit Windows Update zu aktualisieren, stellen Sie einen Gerätetreiber bereit, der die Firmwarenutzlast enthält. Wenn Sie einen Funktionstreiber für Ihr Gerät bereitstellen, können Sie die Firmwareupdatelogik und Nutzlast zum vorhandenen Treiber hinzufügen oder ein separates Firmwareupdatetreiberpaket bereitstellen. Wenn Ihr Gerät einen von Microsoft bereitgestellten Treiber verwendet, müssen Sie ein separates Firmwareupdatetreiberpaket bereitstellen. In beiden Fällen muss das Firmwareupdatetreiberpaket universell sein.
Weitere Informationen zu universellen Treibern finden Sie unter Verwenden einer universellen INF-Datei. Die Treiberdatei kann KMDF, UMDF 2 oder das Windows-Treibermodell verwenden.
Da WU keine Software ausführen kann, muss der Firmwareupdatetreiber die Firmware zur Installation an Plug and Play (PnP) übergeben.
Treiberaktionen für Firmwareupdates
In der Regel ist der Firmwareupdatetreiber ein einfacher Gerätetreiber, der die folgenden Verfahren implementiert:
Beim Start des Geräts oder in der EVT_WDF_DRIVER_DEVICE_ADD-Rückruffunktion des Treibers:
- Identifizieren Sie das Gerät, an das der Treiber angeschlossen ist.
- Ermitteln Sie, ob der Treiber über eine Firmwareversion verfügt, die aktueller ist als die Version, die derzeit auf der Gerätehardware geflasht ist.
- Wenn ein Firmwareupdate erforderlich ist, legen Sie einen Ereigniszeitgeber fest, um das Update zu planen.
- Andernfalls tun Sie nichts, bis der Treiber erneut gestartet wird.
Während der Systemlaufzeit:
- Wenn eine Aktualisierung in die Warteschlange gestellt wird, warten Sie, bis eine Reihe von Bedingungen erfüllt ist.
- Wenn Bedingungen erfüllt sind, führen Sie das Firmwareupdate auf dem Gerät aus.
Inhalte des Firmware-Update-Treibers
In der Regel enthält das Firmwareupdatetreiberpaket die folgenden Elemente:
- Universal Driver INF
- Treiberkatalog
- Funktionstreiber (.sys oder .dll)
- Binärdatei mit Firmwareupdatenutzdaten
Übermitteln Sie Ihr Firmwareupdatepaket als separate Treiberübermittlung.
Hinzufügen der Firmwareupdatelogik zu einem vom Anbieter bereitgestellten Treiber
Der vorhandene Funktionstreiber kann den Firmwareupdatemechanismus implementieren, wie im folgenden Diagramm dargestellt:
Wenn Sie den Funktionstreiber und den Firmwareupdatetreiber separat aktualisieren möchten, erstellen Sie einen zweiten Geräteknoten, auf dem Sie den Firmwareupdatetreiber installieren. Das folgende Diagramm zeigt, wie ein Gerät zwei separate Geräteknoten aufweisen kann:
Die Funktions- und Firmwaregeräteknoten müssen unterschiedliche Hardware-IDs aufweisen, damit sie unabhängig voneinander ausgerichtet werden können.
Es gibt eine Reihe von Möglichkeiten zum Erstellen eines zweiten Geräteknotens. Bestimmte Gerätetypen können einen zweiten Geräteknoten auf einem physischen Gerät verfügbar machen, z. B. USB. Sie können diese Funktionalität verwenden, um einen durch Windows Update ansprechbaren Geräteknoten zu erstellen und einen Firmware-Update-Treiber darauf zu installieren. Viele Gerätetypen lassen jedoch nicht zu, dass ein einzelnes physisches Gerät mehrere Geräteknoten aufzählt.
Verwenden Sie in diesem Fall eine ErweiterungS-INF, die die AddComponent-Direktive angibt, um einen Geräteknoten für Windows Update zu erstellen und den Firmwareupdatetreiber darauf zu installieren. Der folgende Codeausschnitt aus einer INF-Datei zeigt, wie Sie dazu vorgehen können:
[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, PCI\DEVICE_ID
[Device_Install.Components]
AddComponent=ComponentName,,AddComponentSection
[AddComponentSection]
ComponentIDs = ComponentDeviceId
In dem INF-Beispiel gibt ComponentIDs = ComponentDeviceId
an, dass das untergeordnete Gerät die Hardware-ID SWC\ComponentDeviceId
hat. Bei der Installation erstellt diese INF-Datei die folgende Gerätehierarchie:
Aktualisieren Sie für zukünftige Firmwareupdates die INF- und Binärdatei, die die Firmwarenutzlast enthält.
Hinzufügen der Firmwareupdatelogik zu einem von Microsoft bereitgestellten Treiber
Wenn Sie Firmware für Geräte aktualisieren möchten, die einen von Microsoft bereitgestellten Treiber verwenden, erstellen Sie einen zweiten Geräteknoten, wie gezeigt.
Bewährte Methoden
Geben Sie in Ihrem Firmwareupdatetreiber INF DIRID 13 an, damit PnP die Dateien im Treiberpaket im DriverStore verlässt:
[Firmware_AddReg] ; Store location of firmware payload HKR,,FirmwareFilename,,"%13%\firmware_payload.bin"
PnP löst diesen Speicherort auf, wenn es das Gerät installiert. Der Treiber kann dann diesen Registrierungsschlüssel öffnen, um den Speicherort der Nutzlast zu ermitteln.
Firmwareupdatetreiber geben die folgenden INF-Einträge an:
Class=Firmware ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
Um einen anderen Geräteknoten zu finden, sollte der Firmwaretreiber die Gerätestruktur relativ zu sich selbst durchlaufen, nicht durch Aufzählen aller Geräteknoten für eine Übereinstimmung. Ein Benutzer hat möglicherweise mehrere Instanzen des Geräts angeschlossen, und der Firmwaretreiber sollte nur das Gerät aktualisieren, dem es zugeordnet ist. In der Regel ist der zu findende Geräteknoten das übergeordnete oder gleichgeordnete Element des Geräteknotens, auf dem der Firmwaretreiber installiert ist. Beispielsweise kann der Firmware-Update-Treiber im Diagramm mit zwei Geräteknoten nach einem benachbarten Gerät suchen, um den Funktionstreiber zu identifizieren. Im nächsten Diagramm kann der Firmwaretreiber nach dem übergeordneten Gerät suchen, um das primäre Gerät zu finden, mit dem er kommunizieren muss.
Der Treiber sollte robust für mehrere Instanzen des Geräts sein, das auf dem System vorhanden ist, möglicherweise mit mehreren verschiedenen Firmwareversionen. Es kann z. B. eine Instanz des Geräts geben, das mehrmals verbunden und aktualisiert wurde. Ein brandneues Gerät könnte dann angeschlossen werden, das mehrere veraltete Firmwareversionen hat. Dies bedeutet, dass der Zustand (z. B. die aktuelle Version) auf dem Gerät und nicht an einem globalen Speicherort gespeichert werden muss.
Wenn es eine vorhandene Methode zum Aktualisieren der Firmware (z. B. EXE oder Co-Installer) gibt, können Sie den Updatecode in einem UMDF-Treiber weitgehend wiederverwenden.