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.
La mise à jour du microprogramme pour les lecteurs de stockage NVMe s’appuie sur les fournisseurs de matériel pour créer des applications de mise à jour de microprogramme qui utilisent des IOCTL spécifiques de mise à jour du microprogramme introduites dans Windows 10. Ces applications sont généralement distribuées en dehors du pipeline Windows Update (WU). Les utilisateurs finaux doivent déterminer quels disques de stockage se trouvent dans leur appareil, obtenir l’utilitaire de microprogramme de lecteur de stockage approprié à partir du site web d’un fabricant, puis télécharger et installer manuellement les mises à jour.
En outre, les appareils exécutant Windows 10 en mode S se trouvent dans une configuration de sécurité améliorée qui permet uniquement aux utilisateurs d’exécuter des applications vérifiées par Microsoft. Par conséquent, les utilitaires du fournisseur peuvent ne pas mettre à jour le microprogramme du lecteur. Ce processus manuel entraîne une faible adoption des mises à jour du microprogramme, augmente les coûts de support et les problèmes de satisfaction des clients pour les fabricants de matériel.
Windows 10 en mode S fonctionne exclusivement avec les applications du Microsoft Store dans Windows et les accessoires compatibles avec Windows 10 en mode S. Un commutateur unidirectionnel hors mode S est disponible. Pour plus d’informations, consultez windows.com/SmodeFAQ et Changer de Mode S dans Windows.
La mise à jour du microprogramme d’appareil à l’aide du service Windows Update (WU) à l’aide d’une solution basée sur un pilote est disponible pour les fournisseurs de matériel et les oblige à ajouter une logique de mise à jour du microprogramme et une charge utile à un pilote de fonction existant ou à fournir un pilote et un package de mise à jour de microprogramme distincts. Ce scénario entraîne un travail duplicatif entre les partenaires matériels et augmente les coûts de maintenance globaux des lecteurs de stockage. Pour plus d’informations sur les pilotes universels, consultez Utilisation d’un fichier INF universel.
L’utilisation de Windows 10 version 2004 (build du système d’exploitation 19041.488 ou version ultérieure) permet de mettre à jour le microprogramme du lecteur NVMe à l’aide d’un pilote fourni par Microsoft et d’un package de mise à jour de microprogramme fourni par un fournisseur de matériel. Cette solution peut être distribuée via Windows Update aux lecteurs et appareils ciblés à l'aide d'identifiants matériels d'ordinateur (CHIDs).
Avertissement
Les mises à jour du microprogramme sont une opération de maintenance potentiellement risquée et ne doivent être distribuées qu’après un test approfondi de la nouvelle image du microprogramme. Le nouveau microprogramme peut nuire à la fiabilité et à la stabilité d’un matériel non pris en charge, voire entraîner une perte de données.
Compatibilité des lecteurs
Pour utiliser Windows 10 pour mettre à jour le microprogramme du lecteur, vous devez disposer de lecteurs pris en charge. Pour garantir le comportement courant de l’appareil, Windows 10 spécifie les exigences facultatives du Kit de laboratoire matériel (HLK) pour les appareils NVMe. Ces exigences décrivent les commandes qu’un lecteur de stockage NVMe doit prendre en charge pour être mis à jour du microprogramme à l’aide de la nouvelle solution windows Update.
Contactez le fournisseur de votre solution pour savoir si votre matériel prend en charge la mise à jour du microprogramme du lecteur par Windows.
Configuration requise pour la compatibilité des appareils Windows pour NVMe : Device.Storage.ControllerDrive.NVMe - sections 5.7 et 5.8
Device.Storage.ControllerDrive.NVMe.BasicFunction
L’appareil doit avoir au moins un emplacement de microprogramme pouvant être mis à niveau.
Validation finale du firmware 5.7
L’activation d’une image de microprogramme doit être effectuée sans nécessiter de cycle d’alimentation de l’appareil.
Le processus d’activation devrait être effectué via une réinitialisation initiée par l’hôte, comme décrit dans la section 8.1 de la version 1.2a de la spécification.
Windows utilise les actions de validation 001b ou 010b lors de l’émission d’une commande de validation du microprogramme.
Les valeurs d’achèvement attendues pour l’activation réussie sans cycle d’alimentation sont 00h (réussite générique), 10h ou 11h.
Si 0Bh est retourné comme état d’achèvement, Windows informe l’utilisateur d’effectuer un cycle d’alimentation de l’appareil. Cela est fortement déconseillé, car il empêche la mise à jour du microprogramme au moment de l’exécution du système d’exploitation et provoque une interruption significative de la charge de travail.
Téléchargement de l'image de microprogramme version 5.8
- L’appareil ne doit pas échouer pendant la phase de téléchargement et continuer à servir les E/S.
Pour plus d'informations, consultez les exigences de compatibilité pour l'appareil Device.Storage.ControllerDrive.NVMe, sections 5.7 et 5.8, situées dans les composants et disponibles en Peripherals.pdf dans le fichier de téléchargement WHCP_Documents_Windows 11, version 24H2.zip.
Identificateurs SCSI pour les lecteurs de disque de stockage NVMe
À compter de Windows 10, version 2004 (build du système d’exploitation 19041.488 ou ultérieure), deux nouveaux identificateurs sont disponibles pour les lecteurs de disque de stockage NVMe à l’aide de pilotes prenant en charge la structure STOR_RICH_DEVICE_DESCRIPTION :
SCSI\t*v(8)p(40)
Où :
- t* est un code de type d’appareil de longueur variable.
- v(8) est un identificateur de fournisseur de 8 caractères.
- p(40) est un identificateur de produit de 40 caractères
SCSI\t*v(8)p(40)r(8)
Où :
- t* est un code de type d’appareil de longueur variable.
- v(8) est un identificateur de fournisseur de 8 caractères.
- p(40) est un identificateur de produit de 40 caractères
- r(8) est une valeur de niveau de révision de 8 caractères.
L’identificateur SCSI\t*v(8)p(40)r(80 fournit un nom de produit complet (aligné sur la spécification NVME 1.4) et permet la création d’un nœud de composant logiciel (SWC) pour les mises à jour du microprogramme pour les lecteurs NVME correspondant à ce nom (jusqu’à 40 caractères et 8 révisions de microprogramme de caractères).
Pour plus d’informations, consultez Identificateurs pour les appareils SCSI et STOR_RICH_DEVICE_DESCRIPTION
Détails de la solution SFU (Storage Firmware Update)
Dans le diagramme suivant, Windows 10 fournit à la fois le pilote de fonction (stornvme.sys) et le pilote de mise à jour du microprogramme (storfwupdate.dll). Pour utiliser le pilote fourni par Microsoft pour mettre à jour le microprogramme du lecteur NVMe, deux soumissions de pilotes distinctes sont requises.
Package 1 - Créer une identité pour la mise à jour du microprogramme du lecteur
En règle générale, ce package contient les éléments suivants :
Extension INF pour créer un nœud de périphérique logiciel afin de jouer le rôle de matériel ciblé de manière indépendante pour le package de mise à jour du microprogramme.
Catalogue de pilotes
Envoyez votre package INF d’extension en tant que soumission de pilote distincte.
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 créer le nœud d’appareil :
[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, SCSI\DiskNVMe____StorageIHVabcd
[StorageIHVabcd.Components]
AddComponent= StorageIHVabcd_component,,StorageIHVabcd_ComponentInstall
[StorageIHVabcd_ComponentInstall]
ComponentIDs = StorageIHVabcd-firmware-update
Dans cet exemple INF, ComponentIDs = StorageIHVabcd-firmware-update indique que l’appareil enfant aura un ID matériel de SWC\StorageIHVabcd-firmware-update. Une fois installé, cet INF crée la hiérarchie d’appareils suivante :
Un exemple d’extension INF pour créer une nouvelle identité pour les mises à jour du microprogramme de lecteur est fourni ci-dessous. Étant donné que le matériel SCSI\DiskNVMe____StorageIHVabcd peut ne pas être unique entre les fabricants de matériel, l’extension INF doit utiliser le ciblage CHID pour la distribution.
Package 2 - Package de mise à jour du microprogramme du lecteur
En règle générale, ce package contient les éléments suivants :
INF du pilote universel du microprogramme de classe
Binaire de mise à jour du microprogramme
Catalogue de pilotes
Soumettez votre paquet de micrologiciel comme soumission de pilote distincte.
Le package INF de mise à jour du microprogramme du lecteur cible le nouveau nœud SWC\StorageIHVabcd-firmwareupdate et appelle le pilote de mise à jour du microprogramme de stockage Windows 10. Pour qu’un périphérique énuméré par logiciel fonctionne, son parent doit être démarré. Pour utiliser le disque StorFwUpdate, les développeurs doivent utiliser les directives Include/Needs INF dans la section DDInstall de chaque section possible [DDInstall.*] vers les sections correspondantes [StorFwUpdate.*], comme indiqué ici, que l’INF spécifie ou non des directives pour cette section.
[StorFwUpdateOem.NT]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT
CopyFiles = StorFwUpdateOem.CopyFiles
[StorFwUpdateOem.NT.Wdf]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Wdf
[StorFwUpdateOem.NT.Services]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Services
Pour plus d’informations, consultez Utilisation d’un fichier INF de composant. Un exemple de fichier INF de mise à jour du microprogramme du lecteur NVMe est fourni ci-dessous. Étant donné que l’identité logicielle SWC\StorageIHVabcd-firmwareupdate peut ne pas être unique dans les fabricants de matériel, l’INF doit utiliser le ciblage CHID pour la distribution Windows Update.
Le composant StorFwUpdate n’effectue aucune validation (vérification de signature ou déchiffrement) de la charge utile binaire du microprogramme. Si ce niveau de fonctionnalité est requis, les partenaires matériels peuvent écrire leur propre pilote de mise à jour du microprogramme de stockage.
Exemple de mise à jour du microprogramme du lecteur de stockage
Étant donné que les deux INFs nécessitent des CHID pour la distribution de Windows Update, les partenaires matériels peuvent valider la solution localement avec PNPUTIL.EXE comme indiqué ci-dessous.
Spécifications
Windows 10, version 2004 (build du système d’exploitation 19041.488 ou version ultérieure)
Appareil avec lecteur de stockage NVMe à l’aide du pilote de boîte de réception stornvme.sys
Binaire du microprogramme du lecteur NVMe
Fichiers INF correctement créés
Afficher la version actuelle du microprogramme du disque NVMe
Pour afficher la version actuelle du microprogramme du disque NVMe :
Ouvrez une fenêtre PowerShell en tant qu’administrateur.
Tapez
Get-PhysicalDisk | Get-StorageFirmwareInformationpour afficher la version actuelle du microprogramme du disque NVMe.
Notez les valeurs ActiveSlotNumber et FirmwareVersionInSlot actuelles.
Pour plus d’informations, consultez Get-StorageFirmwareInformation.
Installer l’extension INF pour créer une identité matérielle logicielle
Accédez au répertoire de votre système qui contient le fichier INF du package d’extension de pilote. Par exemple, saisissez
cd .\signed-DiskExtnPackage\.Vérifiez que le fichier INF d’extension contient les informations des lecteurs que vous mettez à jour. Consultez le fichier INF de l’extension de disque dans cet article pour obtenir un exemple d’extension INF.
Installez l’extension INF avec l’utilitaire Microsoft PnP. Par exemple, dans une invite de commandes administrateur, tapez
pnputil /add-driver .\OEMDiskExtnPackage.inf /install. À mesure que le nouveau nœud logiciel est créé en tant qu’enfant d’un appareil critique de démarrage, un redémarrage est nécessaire pour prendre effet.
Afficher le nouveau nœud du composant logiciel (SWC)
Pour afficher le nouveau nœud SWC et l’ID matériel :
Dans le menu Démarrer de Windows 10, ouvrez le Panneau de configuration, puis ouvrez Device Manager.
Dans Device Manager, sélectionnez Lecteurs de disque, développez le nœud et sélectionnez le lecteur de disque que vous avez mis à jour.
Une fois que vous avez sélectionné le lecteur que vous avez mis à jour, dans le menu Affichagedu Gestionnaire d’appareils, sélectionnez Appareils par connexion.
Sélectionnez le nœud de lecteur, puis cliquez pour l'agrandir. Vous verrez un composant logiciel générique enfant sous le nœud de lecteur.
Cliquez avec le bouton droit sur le composant logiciel générique , puis sélectionnez Propriétés.
Dans la boîte de dialogue Propriétés, sélectionnez l’onglet Détails, puis sélectionnez Identifiants de matériel dans la liste déroulante sous la section Propriété pour voir l’ID matériel du composant logiciel générique sur le nœud du lecteur.
L’ID matériel SWC\* doit correspondre à celui spécifié dans l’INF d’extension.
Afficher et installer la mise à jour du microprogramme du disque NVMe
Ouvrez une fenêtre PowerShell en tant qu’administrateur.
Accédez au répertoire de votre système qui contient le fichier INF de mise à jour du microprogramme du disque NVMe. Par exemple, saisissez
cd .\signed-ihv-firmware\.Vérifiez que le fichier INF de mise à jour du firmware du disque contient les informations concernant les lecteurs que vous mettez à jour. Consultez le fichier INF du microprogramme du disque dans cet article pour un exemple d'INF de mise à jour du microprogramme de disque.
Installez la mise à jour du firmware du disque INF avec l’utilitaire Microsoft PnP. Par exemple, dans une invite de commandes administrateur, tapez
pnputil /add-driver .\StorFwUpdateIHV.inf /install.Ouvrez une fenêtre PowerShell en tant qu’administrateur.
Tapez
Get-PhysicalDisk | Get-StorageFirmwareInformationpour afficher les informations de microprogramme de disque NVMe mises à jour.
Affichez les informations de microprogramme de disque NVMe mises à jour dans les valeurs ActiveSlotNumber et FirmwareVersionInSlot .
Pour plus d’informations, consultez Get-StorageFirmwareInformation.
Déployer les packages d’extension INF et de microprogramme via Windows Update
Tout d'abord, validez le déploiement du package via Windows Update en utilisant les instructions de publication pour distribution de test.
Ensuite, déployez le package via Windows Update à l’aide des CHID appropriés.
Pour plus d’informations sur le déploiement, consultez le flux de travail de publication du pilote Windows 10 (téléchargement DOCX).
Exemple INF d’extension de disque
Voici un exemple de fichier INF d’extension :
;/*++
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
; PURPOSE.
;
; File:
;
; OEMDiskExtnPackage.inx
;
; Description:
;
; INF file for installing the OEMDiskExtnPackage. This will create a SWC\ DevNode
; which will service as the target HWID for the Disk storage firmware package.
;
;--*/
[Version]
Signature="$Windows NT$"
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
Provider = %ManufacturerName%
ExtensionId = {D91908BD-43FA-411B-92A1-C378AE5AF9FA}
CatalogFile = delta.cat
DriverVer = 08/26/2019,1.0.0.0
PnpLockdown = 1
[SourceDisksNames]
1 = %DiskName%
[Manufacturer]
%ManufacturerName%=Standard,NTamd64
[Standard.NTamd64]
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV1-87B, SCSI\DiskNVMe____StorageIHV1-87B
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV1-87A, SCSI\DiskNVMe____StorageIHV1-87A
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV2_KUS02020, SCSI\DiskNVMe____StorageIHV2_KUS02020
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV3_KBG40ZPZ512G, SCSI\DiskNVMe____KBG40ZPZ512G_IHV300Y9
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV3_KBG40ZPZ512G, SCSI\DiskNVMe____KBG40ZPZ512G_IHV30015
[StorageIHV1-87B.NT]
[StorageIHV1-87B.NT.Components]
AddComponent = StorageIHV1-87B_component,,StorageIHV1-87B_ComponentInstall
[StorageIHV1-87B_ComponentInstall]
ComponentIds=StorageIHV1-87B
[StorageIHV1-87A.NT]
[StorageIHV1-87A.NT.Components]
AddComponent = StorageIHV1-87A_component,,StorageIHV1-87A_ComponentInstall
[StorageIHV1-87A_ComponentInstall]
ComponentIds=StorageIHV1-87A
[StorageIHV2_KUS02020.NT]
[StorageIHV2_KUS02020.NT.Components]
AddComponent = StorageIHV2_KUS02020_component,,StorageIHV2_KUS02020_ComponentInstall
[StorageIHV2_KUS02020_ComponentInstall]
ComponentIds=StorageIHV2_KUS02020
[StorageIHV3_KBG40ZPZ512G.NT]
[StorageIHV3_KBG40ZPZ512G.NT.Components]
AddComponent = StorageIHV3_KBG40ZPZ512G_component,,StorageIHV3_KBG40ZPZ512G_ComponentInstall
[StorageIHV3_KBG40ZPZ512G_ComponentInstall]
ComponentIds=StorageIHV3_KBG40ZPZ512G
;*****************************************
; Strings section
;*****************************************
[Strings]
ManufacturerName = "OEM"
DiskName = "OEM Disk Extn package Installation Disk"
OEMDiskExtnPackage.DeviceDesc = "Disk Extn Package"
OEMDiskExtnPackage.SVCDESC = "Disk Extn Package"
;Non-Localizable
REG_EXPAND_SZ = 0x00020000
REG_DWORD = 0x00010001
REG_MULTI_SZ = 0x00010000
REG_BINARY = 0x00000001
REG_SZ = 0x00000000
SERVICE_KERNEL_DRIVER = 0x1
SERVICE_ERROR_IGNORE = 0x0
SERVICE_ERROR_NORMAL = 0x1
SERVICE_ERROR_SEVERE = 0x2
SERVICE_ERROR_CRITICAL = 0x3
Exemple d'INF du micrologiciel de disque
Voici un exemple de fichier INF du microprogramme de disque :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
; PURPOSE.
;
; File:
;
; StorageIHV3-Firmware-Update.inx
;
; Description:
;
; Driver installation file for firmware update.
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Version]
Signature="$Windows NT$"
Class=Firmware
ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
Provider=%ManufacturerName%
CatalogFile=delta.cat
DriverVer=08/26/2019,11.37.9.948
PnPLockDown=1
[SourceDisksNames]
1= %DiskName%
[DestinationDirs]
StorFwUpdateOem.CopyFiles=13
[Manufacturer]
%ManufacturerName%=Standard,NTamd64
[Standard.NTamd64]
%StorFwUpdateOem.DeviceDesc%=StorFwUpdateOem, SWC\StorageIHV3_KBG40ZPZ512G
[StorFwUpdateOem.NT]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT
CopyFiles = StorFwUpdateOem.CopyFiles
[StorFwUpdateOem.NT.Wdf]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Wdf
[StorFwUpdateOem.NT.HW]
AddReg = StorFwUpdateOem_HWAddReg
[StorFwUpdateOem_HWAddReg]
HKR,,FriendlyName,,%FwUpdateFriendlyName%
; Specify the location of the firmware offer and payload file in the registry.
; The files are kept in driver store. When deployed, %13% would be expanded to the actual path
; in driver store.
;
HKR,0D9EB3D6-6F14-4E8A-811B-F3B19F7ED98A\0,FirmwareImageVersion, 0x00000000, "AEMS0102"
HKR,0D9EB3D6-6F14-4E8A-811B-F3B19F7ED98A\0,FirmwareFileName, 0x00000000, %13%\AEMS0102.sig
[SourceDisksFiles]
AEMS0102.sig=1
[StorFwUpdateOem.CopyFiles]
AEMS0102.sig
[StorFwUpdateOem.NT.Services]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Services
; =================== Generic ==================================
[Strings]
ManufacturerName="{Your Manufacturer Name}"
StorFwUpdateOem.DeviceDesc = "Storage Firmware Update (StorageIHV3) 1"
DiskName = "Storage Firmware Update Installation Disk"
FwUpdateFriendlyName= "StorageIHV3 Firmware Update"