Notes
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.
Cet article explique comment actualiser le micrologiciel d’un appareil amovible ou in-châssis à l’aide du service Windows Update (WU). Pour plus d’informations sur la mise à jour du microprogramme système, consultez la plateforme de mise à jour du microprogramme UEFI Windows.
Pour mettre à jour le microprogramme d’appareil à l’aide de Windows Update, fournissez un pilote de périphérique qui inclut la charge utile du microprogramme. Si vous fournissez un pilote de fonction pour votre appareil, vous pouvez ajouter la logique de mise à jour du microprogramme et la charge utile au pilote existant, ou vous pouvez fournir un package de pilotes de mise à jour de microprogramme distinct. Si votre appareil utilise un pilote fourni par Microsoft, vous devez fournir un package de pilotes de mise à jour de microprogramme distinct. Dans les deux cas, le package de pilotes de mise à jour du microprogramme doit être universel.
Pour plus d’informations sur les pilotes universels, consultez Utilisation d’un fichier INF universel. Le fichier binaire du pilote peut utiliser KMDF, UMDF 2 ou le modèle de pilote Windows.
Étant donné que WU ne peut pas exécuter de logiciel, le pilote de mise à jour du microprogramme doit remettre le microprogramme à Plug-and-Play (PnP) pour l’installation.
Actions du pilote de mise à jour du microprogramme
En règle générale, le pilote de mise à jour du microprogramme est un pilote de périphérique léger qui implémente les procédures suivantes :
Au démarrage de l’appareil ou dans la fonction de rappel du pilote EVT_WDF_DRIVER_DEVICE_ADD :
- Identifiez l’appareil auquel le pilote est attaché.
- Déterminez si le pilote a une version du microprogramme plus récente que celle du microprogramme actuellement flashée sur le matériel de l’appareil.
- Si une mise à jour du microprogramme est nécessaire, définissez un minuteur d’événements pour planifier la mise à jour.
- Sinon, ne faites rien tant que le pilote n’est pas redémarcé.
Pendant le runtime du système :
- Si une mise à jour est mise en file d’attente, attendez qu’un ensemble de conditions soit rempli.
- Lorsque les conditions sont remplies, effectuez la mise à jour du microprogramme sur l’appareil.
Contenu du pilote de mise à jour du microprogramme
En règle générale, le package de pilotes de mise à jour du microprogramme contient les éléments suivants :
- INF du pilote universel
- Catalogue de pilotes
- Pilote de fonction (.sys ou .dll)
- Binaire de mise à jour du microprogramme
Envoyez votre package de mise à jour de firmware comme une soumission de pilote séparée.
Ajouter une logique de mise à jour du microprogramme à un pilote fourni par le fournisseur
Le pilote de fonction existant peut implémenter le mécanisme de mise à jour du microprogramme, comme illustré dans le diagramme suivant :
Sinon, si vous souhaitez mettre à jour le pilote de fonction et le pilote de mise à jour du microprogramme séparément, créez un deuxième nœud de périphérique sur lequel vous installez le pilote de mise à jour du microprogramme. Le diagramme suivant montre comment un appareil peut avoir deux nœuds d’appareil distincts :
Les nœuds de périphérique de fonction et de microprogramme doivent avoir différents ID matériels pour être ciblés indépendamment.
Il existe deux façons de créer un deuxième nœud d’appareil. Certains types d’appareils ont la possibilité d’exposer un deuxième nœud d’appareil sur un appareil physique, tel que USB. Vous pouvez utiliser cette fonctionnalité pour créer un nœud d’appareil pouvant être ciblé par WU et installer un pilote de mise à jour du microprogramme sur celui-ci. Toutefois, de nombreux types d’appareils n’autorisent pas un seul appareil physique à énumérer plusieurs nœuds d’appareil.
Dans ce cas, utilisez une extension INF qui spécifie la directive AddComponent pour créer un nœud d’appareil ciblé par Windows Update et installer le pilote de mise à jour du microprogramme sur celui-ci. L’extrait de code suivant d’un fichier INF montre comment procéder :
[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, PCI\DEVICE_ID
[Device_Install.Components]
AddComponent=ComponentName,,AddComponentSection
[AddComponentSection]
ComponentIDs = ComponentDeviceId
Dans l’exemple INF, ComponentIDs = ComponentDeviceId
indique que l’appareil enfant a un ID matériel de SWC\ComponentDeviceId
. Une fois installé, cet INF crée la hiérarchie d’appareils suivante :
Pour les futures mises à jour du microprogramme, mettez à jour le fichier INF et binaire contenant la charge utile du microprogramme.
Ajouter une logique de mise à jour du microprogramme à un pilote fourni par Microsoft
Pour mettre à jour le microprogramme des appareils qui utilisent un pilote fourni par Microsoft, créez un deuxième nœud d’appareil, comme indiqué.
Meilleures pratiques
Dans le pilote de mise à jour du microprogramme INF, spécifiez DIRID 13 pour que PnP conserve les fichiers dans le package de pilotes dans DriverStore :
[Firmware_AddReg] ; Store location of firmware payload HKR,,FirmwareFilename,,"%13%\firmware_payload.bin"
PnP résout cet emplacement lorsqu’il installe l’appareil. Le pilote peut ensuite ouvrir cette clé de Registre pour déterminer l’emplacement de la charge utile.
Les pilotes de mise à jour du microprogramme spécifient les entrées INF suivantes :
Class=Firmware ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
Pour localiser un autre nœud d’appareil, le pilote du microprogramme doit parcourir l’arborescence de l’appareil par rapport à elle-même, et non en énumérant tous les nœuds d’appareil pour une correspondance. Un utilisateur peut avoir branché plusieurs instances de l’appareil et le pilote du microprogramme doit uniquement mettre à jour l’appareil avec lequel il est associé. En règle générale, le nœud d’appareil à localiser est le parent ou le frère du nœud d’appareil sur lequel le pilote du microprogramme est installé. Par exemple, dans le diagramme avec deux nœuds d’appareil, le pilote de mise à jour du microprogramme peut rechercher un appareil connexe pour trouver le pilote de fonction. Dans le diagramme suivant, le pilote du microprogramme peut rechercher l’appareil parent pour trouver le périphérique principal avec lequel il doit communiquer.
Le pilote doit être robuste pour plusieurs instances de l’appareil sur le système, éventuellement avec plusieurs versions de microprogramme différentes. Par exemple, il peut y avoir une instance de l’appareil qui a été connectée et mise à jour plusieurs fois. Un nouvel appareil, qui possède plusieurs versions anciennes du microprogramme, peut ensuite être branché. Cela signifie que l’état (par exemple, la version actuelle) doit être stocké sur l’appareil, et non dans un emplacement global.
S’il existe une méthode existante pour mettre à jour le microprogramme (EXE ou co-programme d’installation, par exemple), vous pouvez réutiliser en grande partie le code de mise à jour dans un pilote UMDF.