Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
À partir du WDK pour Windows 11, version 22H2, les co-installateurs redistribuables WDF ne sont plus pris en charge. Pour savoir comment contourner cette modification, consultez l'article intitulé Les co-installateurs redistribuables du WDF ne fonctionnent pas dans l'article sur les problèmes connus du WDK.
Les fournisseurs de périphériques USB utilisent des co-installateurs pour mettre à jour le microprogramme des appareils qui utilisent les pilotes de périphériques USB standard. Toutefois, les co-programmes d’installation ne sont pas pris en charge par la nouvelle norme « Universal INF », qui est une exigence sur Windows 10. Cela pose un défi au processus de mise à jour du microprogramme du périphérique USB existant. Cet article décrit une méthode recommandée pour mettre à jour le microprogramme d’appareil USB sans co-programme d’installation.
Spécifications
Les principales exigences du processus de mise à jour du microprogramme du périphérique USB sont les suivantes :
Mise à jour transparente du microprogramme sans interaction utilisateur
Mécanisme de récupération fiable (par exemple, sans rendre les appareils inutilisables)
Fonctionne sur Windows 7 et versions ultérieures
Aperçu
Les périphériques USB tels que les caméras UVC sont libérés avec un microprogramme pouvant être mis à jour en champ. Il n’existe aucune méthode standard pour mettre à jour le microprogramme aujourd’hui. Un élément commun à tous les mécanismes de mise à jour existants est que certaines suites logicielles personnalisées s’exécutent sur le client et télécharge le microprogramme sur l’appareil. En règle générale, dans le cadre du processus d’installation de l’appareil, la suite logicielle de mise à jour du microprogramme est installée. Le co-installateur démarre le processus de mise à jour du microprogramme. L’absence de co-installateurs sur Windows 10 empêche les fournisseurs d’appareils de mettre à jour le firmware sur ces appareils sur le terrain.
La méthode recommandée pour contourner l’absence d’un co-programme d’installation pour le scénario de mise à jour du microprogramme du périphérique USB consiste à utiliser un pilote de filtre inférieur pour le périphérique USB qui démarre le processus de mise à jour du microprogramme. Pendant l’appel AddDevice , le pilote de filtre vérifie la version du microprogramme de l’appareil et met à jour le microprogramme si nécessaire.
Vue d'ensemble de la mise à jour du micrologiciel
Lorsqu’un périphérique USB est branché au système, le pilote de boîte de réception générique est installé pour l’appareil. Après l’installation du pilote générique, le système d’exploitation interroge le serveur Windows Update pour toute disponibilité du package de pilotes spécifique au fournisseur et le télécharge et installe le pilote. Le package de pilotes installé effectue la mise à jour du microprogramme.
Il existe deux façons de mettre à jour le microprogramme :
Pilote de filtre de mise à jour du microprogramme
- Un fournisseur a fourni un pilote de filtre inférieur qui effectue la mise à jour du microprogramme.
Pilote de périphérique de mise à jour du microprogramme
Un fournisseur a fourni un pilote de filtre inférieur qui place l’appareil en mode de mise à jour du microprogramme.
Le périphérique est reconnu comme un appareil de mise à jour du microprogramme.
Le pilote de mise à jour du microprogramme fourni par le fournisseur se charge sur cet appareil et met à jour le microprogramme.
Méthode 1 : Pilote de filtre de mise à jour du microprogramme
Dans cette méthode, un pilote de filtre de niveau inférieur pour le pilote de périphérique USB est installé dans le cadre du processus de mise à jour du pilote. Ce pilote de filtre effectue la mise à jour du microprogramme.
Le package de mise à jour du pilote sur le serveur Windows Update contient :
Mise à jour du pilote de filtre inférieur WDF de microprogramme
Extension INF pour installer le pilote de filtre inférieur WDF pour la mise à jour du microprogramme.
Fichier « firmware.bin »
Lors de l’installation du package de mise à jour du pilote, la routine AddDevice du pilote de filtre WDF de mise à jour du microprogramme est appelée. À partir de cette routine, le pilote de filtre WDF obtient la version du microprogramme de l’appareil à partir de la clé de registre matériel de l’appareil. Le microprogramme de l'appareil doit placer la version du microprogramme à l'aide du descripteur MSOS sur la clé de registre matériel (HW) de l'appareil.
Si la version du microprogramme de l’appareil et la version attendue du microprogramme du pilote de filtre sont différentes, ou
La version du microprogramme n’est pas disponible dans la clé de Registre HW de l’appareil
- Ensuite, le pilote de filtre s'insère dans la pile d'appareils en retournant un succès au rappel AddDevice.
Sinon, le pilote de filtre ne s’insère pas dans la pile d’appareils
- Étant donné qu’il n’est pas nécessaire de mettre à jour le microprogramme, car l’appareil a le microprogramme attendu.
Lorsque le rappel EVT_WDF_DEVICE_D0_ENTRY du pilote de filtre WDF est appelé ultérieurement, le pilote de filtre doit s’inscrire pour les notifications de modification de l’interface de périphérique à l’aide de CM_Register_Notification ou IoRegisterPlugPlayNotification (UMDF ou KMDF) pour écouter la classe d’interface de périphérique dans laquelle l’appareil USB inscrit l’appareil. Par exemple, le pilote de filtre de mise à jour du microprogramme pour une caméra RVB s'enregistre à KSCATEGORY_VIDEO_CAMERA. Lors de la réception de la notification, le pilote de filtre doit publier un élément de travail qui effectuerait la mise à jour du microprogramme.
Les pilotes de mise à jour de microprogramme basés sur UMDF peuvent utiliser les API spécifiques de l’appareil ou émettre les transferts de contrôle directement pour accéder au périphérique USB pour effectuer la mise à jour du microprogramme. Par exemple, le pilote de filtre basé sur UMDF pour une caméra utilise les API caméra pour effectuer la mise à jour du microprogramme.
Les pilotes de mise à jour de microprogramme basés sur KMDF peuvent envoyer les commandes spécifiques du fournisseur pour effectuer la mise à jour du microprogramme.
Une fois le microprogramme flashé, l’appareil doit se déconnecter et se reconnecter au bus. L’appareil est réinscrit avec le nouveau microprogramme.
La méthode d’utilisation d’un « pilote de filtre de mise à jour du microprogramme » est recommandée pour les appareils qui ont suffisamment de ressources pour contenir deux images de microprogramme complètes (l’image de mise à jour et une image de sauvegarde) sur la mémoire de l’appareil. La raison est qu’il y a eu des défaillances lors du téléchargement du microprogramme mis à jour, l’appareil peut abandonner la mise à jour et démarrer dans son microprogramme d’origine. Ainsi, pas de briquer l’appareil.
Méthode 2 : Pilote de mise à jour du microprogramme du périphérique
Dans cette méthode, un pilote de filtre inférieur sur le périphérique USB est installé dans le cadre du processus de mise à jour du pilote. Ce pilote de filtre envoie une commande à l’appareil pour redémarrer en mode de mise à jour du microprogramme, où l’appareil expose une interface de mise à jour du microprogramme. Le pilote de l’interface de mise à jour du microprogramme se charge et effectue la mise à jour du microprogramme.
Le package de mise à jour du pilote sur le serveur Windows Update pour l’appareil contient :
Pilote de filtre inférieur WDF qui place l’appareil en mode de mise à jour du firmware
Une extension INF pour installer le pilote de filtre bas WDF
En plus du package de mise à jour du pilote, un package de pilote de périphérique distinct pour la mise à jour du microprogramme est disponible sur Windows Update, avec :
Un pilote de périphérique de mise à jour du microprogramme WDF et son INF, et
Fichier « firmware.bin ».
Lors de l’installation du package de mise à jour du pilote, la routine AddDevice du pilote de filtre inférieur WDF est appelée. À partir de cette routine, le pilote de filtre interroge la version du microprogramme de l’appareil à partir de la clé de Registre HW de l’appareil. Le microprogramme de l’appareil place la « version du microprogramme », à l’aide du descripteur MSOS ou de l’extension INF de l’appareil USB, sur la clé de Registre HW de l’appareil.
Si la version du microprogramme de l’appareil et les versions attendues du microprogramme du pilote de filtre sont différentes ou
La version du microprogramme n’est pas disponible dans la clé de Registre HW de l’appareil
Ensuite, le pilote de filtre WDF s’insère dans la pile de périphériques.
Dans le cas contraire, le pilote de filtre WDF ne s’insère pas dans la pile de périphériques.
Lorsque le rappel EVT_WDF_DEVICE_D0_ENTRY du pilote de filtre WDF est appelé ultérieurement, le pilote de filtre émet une commande spécifique au fournisseur pour l’appareil qui le place en mode de mise à jour du microprogramme. L’appareil déconnecte et se reconnecte, exposant l’interface de mise à jour du microprogramme.
Le système énumère l’interface de l’appareil de mise à jour du microprogramme. Un pilote WDF de mise à jour du microprogramme personnalisé fourni par le fournisseur, dans le package de mise à jour du microprogramme, sera chargé pour cette interface de mise à jour du microprogramme. Ce pilote met à jour le microprogramme.
Lorsque le rappel EVT_WDF_DEVICE_D0_ENTRY du pilote de mise à jour du microprogramme WDF est appelé ultérieurement, le pilote doit publier un élément de travail qui effectuerait la mise à jour du microprogramme.
Une fois le microprogramme flashé, l’appareil doit se déconnecter et se reconnecter au bus. L’appareil est réinscrit avec le nouveau microprogramme.
Cette méthode est recommandée pour les appareils qui ne peuvent pas contenir les images de microprogramme mises à jour et d’origine en raison d’une pénurie de mémoire sur l’appareil. La raison est qu’il y a eu des défaillances lors du téléchargement du microprogramme mis à jour, l’appareil peut abandonner la mise à jour et démarrer l’appareil dans son mode de mise à jour du microprogramme à nouveau et la mise à jour du microprogramme peut être retentée. Ainsi, pas de briquer l’appareil.
Récupération
Le processus de mise à jour du microprogramme peut échouer pour différentes raisons. Si cela se produit, lorsque l’appareil est à nouveau énuméré, le pilote de mise à jour du microprogramme peut essayer de mettre à jour le microprogramme à nouveau et peut échouer à nouveau et ce processus de mise à jour peut se retrouver dans une boucle. Le pilote de mise à jour du microprogramme doit placer une limite supérieure au nombre de nouvelles tentatives qu’il peut effectuer. Lorsque les nouvelles tentatives de mise à jour du microprogramme dépassent un seuil (par exemple, trois nouvelles tentatives), le pilote de filtre ne doit pas tenter de mettre à jour à nouveau le microprogramme tant qu’une nouvelle version du pilote n’est pas téléchargée à partir de WU. Le pilote de mise à jour du microprogramme peut utiliser le Registre pour conserver les états de nouvelle tentative.
À la fin de la mise à jour du microprogramme de l’appareil, nous vous recommandons de réinitialiser l’appareil lui-même et de réinscrire.
Pour les deux méthodes de mise à jour du microprogramme, la fonction de l'appareil doit être arrêtée avant d'effectuer la mise à jour du microprogramme. Cela garantit qu’il n’existe aucun handle ouvert sur l’appareil et évite toute exigence de redémarrage du système d’exploitation.
Exemple de règle INF
;==============================================================================
; Microsoft Extension INF for USB Camera Firmware Update UMDF Filter Driver
; Copyright (C) Microsoft Corporation. All rights reserved.
;==============================================================================
[Version]
Signature="$WINDOWS NT$"
Class=Extension
ClassGUID={e2f84ce7-8efa-411c-aa69-97454ca4cb57}
Provider=%CONTOSO%
ExtensionId={BC6EE554-271C-48C8-B713-8078833962BD} ; replace with your own GUID
CatalogFile.NT=SampleExtension.cat
DriverVer=08/28/2017,10.0.1700.000
PnpLockdown=1
[SourceDisksFiles]
ContosoFirmwareUpdateFilterDriver.dll=1
ContosoFirmware.bin=1
[SourceDisksNames]
1 = %MediaDescription%
[DestinationDirs]
UMDriverCopy=13
ContosoFirmwareCopy=13
DefaultDestDir = 13
[UMDriverCopy]
ContosoFirmwareUpdateFilterDriver.dll
[ContosoFirmwareCopy]
ContosoFirmware.bin
[Manufacturer]
%CONTOSO% = ContosoFirmwareUpdateFilterDriver,NTamd64.10.0...22000
[ContosoFirmwareUpdateFilterDriver.NTamd64.10.0...22000]
; replace with your camera device VID PID
%ContosoCamera.DeviceDesc% = ContosoFirmwareUpdateFilterDriver_Win11Install, USB\VID_1234&PID_1234&REV_1234
[ContosoFirmwareUpdateFilterDriver_Win11Install]
Include=wudfrd.inf
Needs=wudfrd.NT
CopyFiles=UMDriverCopy, ContosoFirmwareCopy
[ContosoFirmwareUpdateFilterDriver_Win11Install.HW]
Include=wudfrd.inf
Needs=wudfrd.NT.HW
[ContosoFirmwareUpdateFilterDriver.AddReg]
; Load the redirector as an lower filter on this specific device.
; 0x00010008 - FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND
HKR,,"LowerFilters",0x00010008,"WUDFRd"
[ContosoFirmwareUpdateFilterDriver_Win11Install.Services]
Include=wudfrd.inf
Needs=WUDFRD.NT.Services
[ContosoFirmwareUpdateFilterDriver_Win11Install.Wdf]
UmdfService=ContosoFirmwareUpdateFilterDriver, ContosoFirmwareUpdateFilterDriver.UmdfFilter
UmdfServiceOrder=ContosoFirmwareUpdateFilterDriver
[ContosoFirmwareUpdateFilterDriver.UmdfFilter]
UmdfLibraryVersion=2.0.0
ServiceBinary= "%13%\ContosoFirmwareUpdateFilterDriver.dll"
[Strings]
CONTOSO = "Contoso Inc."
ContosoCamera.DeviceDesc = "Contoso Camera Extension"
MediaDescription="Contoso Camera Firmware Update Filter Driver Installation Media"
WudfRdDisplayName = "WDF Reflector Driver"