Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Je nutné, aby se datová část aktualizace pro každý prostředek firmwaru popsaná v esRT seskupila a distribuovala ve vlastním balíčku ovladačů , aby mohla udržovat vlastní schéma správy verzí, aniž by bylo vázáno na jiné aktualizace prostředků firmwaru, které nemusí být aktualizovány ve stejném tempu.
Následující příklad obsahuje definici souboru INF balíčku ukázkového balíčku ovladačů pro aktualizaci prostředku firmwaru, která cílí na prostředek {SYSTEM_FIRMWARE} z příkladu ESRT v tabulce 2 a aktualizuje ho z verze 1 na verzi 2. Pro referenční účely předpokládejme, že identifikátor GUID přiřazený k prostředku SYSTEM_FIRMWARE je 6bd4efb9-23cc-4b4a-ac37-016517413e9a.
[Version]
Signature = "$WINDOWS NT$"
Provider = %Provider%
Class = Firmware
ClassGuid = {f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
DriverVer = 01/01/2012,2.0.0.0
CatalogFile = catalog.cat
PnpLockdown = 1
[Manufacturer]
%MfgName% = Firmware,NTarm64.10.0...17134
; Prior to Windows 10, version 1803, the above should instead be:
; %MfgName% = Firmware,NTarm64
[Firmware.NTarm64.10.0...17134]
; Prior to Windows 10, version 1803, the above should instead be:
; [Firmware.NTarm64]
%FirmwareDesc% = Firmware_Install,UEFI\RES_{6bd4efb9-23cc-4b4a-ac37-016517413e9a}
[Firmware_Install.NT]
CopyFiles = Firmware_CopyFiles
[Firmware_CopyFiles]
firmware.bin
[Firmware_Install.NT.Hw]
AddReg = Firmware_AddReg
[Firmware_AddReg]
HKR,,FirmwareId,,{6bd4efb9-23cc-4b4a-ac37-016517413e9a}
HKR,,FirmwareVersion,%REG_DWORD%,0x00000002
HKR,,FirmwareFilename,,%13%\firmware.bin
; Prior to Windows 10, version 1803, the above should instead be:
; HKR,,FirmwareFilename,,{6bd4efb9-23cc-4b4a-ac37-016517413e9a}\firmware.bin
[SourceDisksNames]
1 = %DiskName%
[SourceDisksFiles]
firmware.bin = 1
[DestinationDirs]
DefaultDestDir = 13
; Prior to Windows 10, version 1803, the above should be:
; DefaultDestDir = 10,Firmware\{6bd4efb9-23cc-4b4a-ac37-016517413e9a}
[Strings]
; localizable
Provider = "Contoso Ltd."
MfgName = "Fabrikam Inc."
FirmwareDesc = "Fabrikam System Firmware 2.0"
DiskName = "Firmware Update"
; non-localizable
REG_DWORD = 0x00010001
Změňte následující části tak, aby se přizpůsobily vašemu nastavení.
[Version]
DriverVer --> The date on which this driver package was authored and the driver version of this driver package. Driver version in this driver package must be greater than the current driver version
CatalogFile --> Name of the catalog file
firmware.bin --> Change all instances of firmware.bin with the name of the firmware image name
[Manufacturer]
%MfgName% = Firmware,NTarm64.10.0...17134
[Firmware.NTarm64.10.0...17134] --> Change the architecture.
For x86, it should be NTx86
For AMD64, it should be NTamd64
[Firmware.NTarm64.10.0...17134]
%FirmwareDesc% = Firmware_Install,UEFI\RES_{6bd4efb9-23cc-4b4a-ac37-016517413e9a} --> The GUID of the firmware resource
[Firmware_AddReg]
HKR,,FirmwareId,,{6bd4efb9-23cc-4b4a-ac37-016517413e9a} --> The GUID of the firmware resource
HKR,,FirmwareVersion,%REG_DWORD%,0x00000002 --> Version of the firmware for the update
HKR,,FirmwareFilename,,%13%\firmware.bin --> firmware.bin should be replaced with the firmware image name
; Prior to Windows 10, version 1803, the above should instead be:
HKR,,FirmwareFilename,,{6bd4efb9-23cc-4b4a-ac37-016517413e9a}\firmware.bin --> The subdirectory named after the GUID of the firmware resource and the firmware image name
[DestinationDirs]
DefaultDestDir = 13 --> The full destination path as a 'run from Driver Store' binary
; Prior to Windows 10, version 1803, the above should be:
; DefaultDestDir = 10,Firmware\{6bd4efb9-23cc-4b4a-ac37-016517413e9a} --> The full destination path for the firmware image file based under a subdirectory named after the GUID of the firmware resource within the %SystemRoot%\Firmware directory
[Strings]
; localizable
Modify any strings here [optional]
Následující tabulka popisuje různé části a pole INF balíčku ovladačů s odkazem na výše uvedenou definici souboru INF balíčku ukázkového balíčku ovladačů.
Oddíl/pole | Hodnota | Komentář |
---|---|---|
[Verze] | Definuje informace o správě verzí balíčku ovladačů. | |
Poskytovatel | %Provider% = Contoso Inc. (lokalizované v části [Řetězce]) |
Identifikuje poskytovatele nebo dodavatele celého balíčku ovladače aktualizace prostředků firmwaru. |
Třída/ClassGuid | Mikroprogramové vybavení/ {f2e7dd72-6468-4e36-b6f1-6488f42c1b52} |
Určuje datum balíčku ovladačů. Datum a verze by měly co nejblíže odrážet datum a verzi skutečné aktualizace prostředku firmwaru, aby se zajistilo, že instalační systém zařízení PnP dokáže přesně vybrat nejlepší balíček ovladačů dostupný v systému. |
Soubor katalogu | catalog.cat | Určuje přidružený soubor katalogu, který podpisuje soubor INF balíčku ovladače a všechny přidružené binární soubory aktualizace prostředků firmwaru. |
PnpLockdown | 1 | Umožňuje mechanismus uzamčení souborů ovladače PnP, aby bylo možné chránit nainstalované soubory ovladačů před externí úpravou nesouvisejícími aplikacemi. U aktualizací prostředků firmwaru by toto nastavení mělo být vždy povoleno, aby se zajistilo, že soubory imagí prostředků firmwaru nelze manipulovat mimo kontrolu systému PnP. |
[Výrobce] | Zobrazí seznam všech různých výrobců ovladačů nebo dodavatelů, kteří definují aktualizace prostředků firmwaru. Každý řádek výrobce určuje oddíl [<Models>] a identifikuje svou podporovanou cílovou platformu. | |
%MfgName% | Fabrikam Inc. (lokalizované v části [Řetězce]) |
Identifikuje výrobce nebo dodavatele aktualizace firmwaru. Může to být stejné jako pole Zprostředkovatel. |
Mikroprogramové vybavení NTarm64.10.0... 17134 |
Identifikuje oddíl [<Modely>], který definuje zařízení prostředků firmwaru podporovaná tímto balíčkem ovladačů, včetně jejich cílových platforem ovladačů. V tomto příkladu jsou ovladače určené pouze pro platformu NT založenou na Arm64 pro buildy Windows 10 17134 a novější a část [<Modely>] je [Firmware.NTarm64.10.0... 17134]. | |
[Firmware.NTarm64.10.0... 17134] | Část [<Modely>] pro platformu NT založenou na Arm64 pro buildy Windows 10 17134 a novější, která uvádí seznam všech zařízení prostředků firmwaru, pro která jsou definovány aktualizace. Každá modelová řada hardwaru určuje sekci [<DDInstall>] a její odpovídající ID hardwaru. | |
%FirmwareDesc% | Systémový firmware Fabrikam 2.0 (lokalizované v části [Řetězce]) |
Popisuje aktualizaci zdrojů firmwaru. Toto je primární řetězec popisu, který slouží k prezentaci instance firmwarového prostředku zařízení ve Správci zařízení a dalším rozhraní souvisejícím se zařízeními. Z tohoto důvodu může popis obsahovat dodavatele a verzi firmwaru. |
Instalace firmwaru UEFI\RES_{RESOURCE_GUID} |
Identifikuje sekci [<DDInstall] obsahující instalační kroky pro aktualizaci prostředku firmwaru, která je určena pro instanci zařízení identifikovanou ID hardwaru UEFI\RES_{RESOURCE_GUID}. Kde RESOURCE_GUID je identifikátor GUID prostředku firmwaru, který se aktualizuje. | |
[Firmware_Install.NT] CopyFiles = Firmware_CopyFiles [Firmware_CopyFiles] ... |
Část [<DDInstall>], která obsahuje instalační kroky pro aktualizaci prostředků firmwaru. U aktualizací prostředků firmwaru je tímto určen pouze soubor image, který se má zkopírovat jako součást aktualizace prostředku firmwaru. V tomto příkladu je sekce [<DDInstall>] [Firmware_Install.NT]. | |
firmware.bin | Určuje obraz souboru aktualizace firmwaru, který se má zkopírovat. Podrobnosti o tom, kde se tento soubor kopíruje, najdete níže v části [DestinationDirs]. | |
[Firmware_Install.NT.Hw] AddReg = Firmware_AddReg [Firmware_AddReg] ... |
[c0 />DDInstall>.Hw] oddíl obsahující kroky instalace specifické pro hardware pro aktualizaci zdrojů firmwaru. U aktualizací prostředků firmwaru se definují informace o konfiguraci aktualizace prostředků firmwaru ve formě hodnot registru, které jsou nastavené pod hardwarovým klíčem zařízení cílové instance zařízení. | |
FirmwareId | {RESOURCE_GUID} | Identifikátor GUID aktualizace prostředku firmwaru. Všimněte si, že se jedná o stejný identifikátor GUID prostředku firmwaru, který je vložený v ID hardwaru UEFI\RES_{RESOURCE_GUID}, je však nutné ho zadat jako samostatnou hodnotu, protože systém PnP považuje všechna hardwarová ID za neprůzné řetězce, které se výhradně používají pro účely párování zařízení a ovladačů. |
FirmwareVersion | 0x00000002 | Verze firmwaru aktualizace firmwarového prostředku, určena jako hodnota REG_DWORD. |
FirmwareFilename | %13%\firmware.bin | Ve Windows 10 verze 1803 a novější by to měl být soubor "spustit z úložiště ovladačů" a zadat úplnou cestu k binárnímu souboru, například v příkladu. V případě systému Windows 10 verze 1803 by to měla být relativní cesta a název souboru firmwaru souboru image Update Capsule aktualizace prostředku firmwaru v adresáři %SystemRoot%\Firmware tak, aby {RESOURCE_GUID} představoval podadresář použitý k uspořádání všech souborů image firmwaru určených pro konkrétní prostředek firmwaru. Například {RESOURCE_GUID}\firmware.bin. |
[SourceDisksNames] | Zobrazí seznam všech různých umístění zdrojových disků ovladačů, kde jsou obsaženy přidružené soubory ovladačů, jako jsou soubory image prostředků aktualizace firmwaru. | |
1 | %DiskName% = Aktualizace firmwaru (lokalizované v části [Řetězce]) |
Určuje libovolné číslo ID zdrojového disku balíčku ovladače a jeho popis. Není zadán žádný podadresář pro volitelný balíček ovladače, takže se očekává, že všechny soubory ovladače přidružené k tomuto ID disku, jako je soubor s aktualizací obrazu firmwaru, budou přímo vedle souboru INF. |
[SourceDisksFiles] | Zobrazí seznam všech souborů ovladačů odkazovaných balíčkem ovladačů a jejich propojení s ID disku z oddílu [SourceDisksNames]. | |
firmware.bin | 1 | Stanoví soubor s aktualizací firmwaru firmware.bin jako součást balíčku ovladače tím, že jej propojí s ID primárního disku. Není zadán žádný volitelný podadresář specifický pro soubor, takže se očekává, že tento soubor ovladače bude aktivní vzhledem k podadresáři ID disku, což je v tomto případě přímo vedle souboru INF. |
[DestinationDirs] | Zobrazí seznam cílových cílových adresářů všech souborů ovladačů odkazovaných balíčkem ovladačů. | |
DefaultDestDir | 13 | Určuje výchozí cílový adresář všech souborů ovladačů zkopírovaných tímto balíčkem ovladače. Ve Windows 10 verze 1803 a novější by to mělo být DIRID 13, aby se soubory spouštěly z Úložiště ovladačů. Před Windows 10 verze 1803 by to mělo být 10,Firmware\{RESOURCE_GUID}, aby bylo možné určit, že cíl všech souborů je ve složce %SystemRoot%\Firmware, kde 10 (DIRID_WINDOWS) představuje základní adresář %SystemRoot% a {RESOURCE_GUID} představuje podadresář pojmenovaný podle identifikátoru GUID prostředku firmwaru. |
[Řetězce] | Definuje mapování klíč/hodnota pro všechny nepřímé řetězcové tokeny (%token%) v souboru INF ovladačového balíčku. Použití řetězcových tokenů umožňuje snadno lokalizovat soubor INF balíčku ovladače pomocí zavedení sekcí specifických pro národní prostředí [Řetězce.<LanguageID>]. Může být také užitečné použít náhradu řetězce tokenem pro definování konstantních číselných hodnot, například REG_DWORD. | |
Poskytovatel | Contoso Ltd. | Příklad mapování klíče/hodnoty řetězcového tokenu |
Je důležité použít jedinečný název pro každou verzi obrazového souboru s aktualizací firmwaru, abyste se vyhnuli případným kolizím s jinými obrazovými soubory firmwaru, jak vašich vlastních, tak i od jiných dodavatelů. Například firmware.bin z výše uvedeného by měl být přiřazen následující název, aby vyhovoval omezením názvu dodavatele i verze: Fabrikam-System-Firmware-2.0.bin.
Aby se zajistilo, že varianty dané image aktualizace prostředku firmwaru, které se potenciálně používají pro účely přizpůsobení OEM/IHV, nekolidují při nasazení do stejné image systému Windows, doporučuje se, aby každá samostatná image aktualizace prostředku firmwaru byla buď souborem „spouštěným z úložiště ovladačů“ (Windows 10, verze 1803 a novější) nebo byla udržována v podadresáři v adresáři %SystemRoot%\Firmware. Tento podadresář by měl být pojmenován podle GUID cílového firmwarového prostředku. Například následující cesty prostředků aktualizace firmwaru splňují omezení nasazení: %SystemRoot%\\Firmware\\{6bd4efb9-23cc-4b4a-ac37-016517413e9a}\\Fabrikam-System-Firmware-2.0.bin
.
Testování podepisování balíčku ovladače firmwaru
Jakmile je soubor INF balíčku ovladače a binární datová část firmwaru připravené, musí být celý balíček ovladače podepsaný, aby se vytvořil soubor katalogu. Je nezbytné, aby tento soubor katalogu zaručoval platnost a pravost souboru INF a binárního souboru s firmwarem obsaženého v balíčku ovladače, aby systém Windows mohl bezpečně zahájit aktualizaci zdrojů firmwaru.
Níže jsou uvedené kroky pro samoobslužné podepsání balíčku ovladače pro testovací účely. Upozorňujeme, že tyto kroky jsou určené pouze pro účely testování. V produkčním prostředí musí být balíčky ovladačů aktualizace firmwaru odeslány do Partnerského centra pro podepisování. Postup podepsání balíčku ovladače firmwaru pro produkční prostředí najdete v tématu Certifikace a podepsání balíčku aktualizace.
Nainstalujte nejnovější sadu Windows SDK a sadu Windows Driver Kit. Tím se nainstaluje makecert, pvk2pfx inf2cat a nástroje signtool v části
%systemdir%\Program Files (x86)\Windows Kits\<*version*>\bin\x86
.Spuštěním následujícího příkazu vytvořte testovací certifikát.
makecert.exe -r -pe -a sha256 -eku 1.3.6.1.5.5.7.3.3 -n CN=Foo -sv fwu.pvk fwu.cer pvk2pfx.exe -pvk fwu.pvk -spc fwu.cer -pi <Password entered during makecert prompt> -spc fwu.cer -pfx fwu.pfx
Další informace naleznete v tématu MakeCert.
Spuštěním následujícího příkazu vytvořte soubor katalogu.
Inf2Cat.exe /driver:"." /os:8_x64
Argument /driver odkazuje na umístění, kde se nachází soubor INF. Změňte hodnotu argumentu /os v závislosti na operačním systému, pro který je balíček ovladače firmwaru určený. Další informace naleznete v tématu Inf2Cat.
Další informace o katalogech zabezpečení a ovladačích naleznete v tématu Soubory katalogu a digitální podpisy a Vytvoření souboru katalogu pro balíček ovladače PnP.
Spuštěním následujícího příkazu podepište soubor katalogu.
signtool sign /fd sha256 /f fwu.pfx /p <Password entered during makecert prompt> delta.cat
Další informace naleznete v tématu SignTool.
Nainstalujte testovací certifikát do testovacího systému:
Poklikejte na soubor fwu.cer a zvolte možnost Instalovat certifikát .
Během instalace certifikátu zvolte následující možnosti:
Jako umístění úložiště zvolte Místní počítač.
Pro úložiště certifikátů vyhledejte a vyberte důvěryhodné kořenové certifikační autority.
Zakažte zabezpečené spouštění v možnostech firmwaru nebo systému BIOS.
Povolte testovací režim v možnostech BCD, aby zavaděč operačního systému mohl během spouštění načíst soubor obrazu firmwaru (firmware.bin), i když katalog není produkčně podepsán. Spusťte následující příkaz s oprávněními správce:
bcdedit /set testsigning on
Po podepsání balíčku ovladače je možné ho nainstalovat pomocí jednoho z následujících mechanismů:
Správce zařízení. Pro ruční testování poskytuje Správce zařízení uživatelsky přívětivé rozhraní pro vyhledání zařízení s prostředkem firmwaru a aktualizaci jeho ovladače, aby se mohla zahájit aktualizace prostředku firmwaru.
Při prohlížení zařízení podle typu vyhledejte požadované zařízení prostředku firmwaru ve třídě Firmware nebo v zařízení Microsoft UEFI-Compliant System při prohlížení zařízení podle připojení.
Klikněte pravým tlačítkem na zařízení s firmwarovými prostředky a vyberte možnost "Aktualizovat software ovladače...".
Použijte možnost "Procházet tento počítač pro software ovladače" k nalezení a instalaci novějšího balíčku ovladače aktualizace firmwaru do zařízení s firmwarem. Tato operace zajistí, že zadaný balíček ovladače aktualizace prostředků firmwaru je ve skutečnosti novější než jakýkoli existující balíček ovladače aktualizace prostředků firmwaru, který již může být na zařízení prostředku firmwaru, než ho přidáte do Windows Driver Store a zahájíte instalaci.
pnputil. Pro automatizované testování lze nástroj příkazového řádku PnpUtil použít z příkazového řádku se zvýšenými oprávněními správce k importu balíčku ovladače aktualizace prostředků firmwaru do Windows Driver Storu a zahájit instalaci zařízení na libovolné/všechny příslušné zařízení prostředků firmwaru, která aktuálně používají starší verzi prostředku firmwaru, jak je navázán OvladačVer z aktuálně nainstalovaného balíčku ovladačů INF soubor nebo nedostatek souboru INF balíčku ovladače od jiného výrobce. úplně. K přidání a instalaci X:\firmware.inf použijte například následující příkazový řádek:
pnputil -i -a X:\firmware.inf
Pokud byla aktualizace prostředku firmwaru úspěšně nainstalována na zařízení prostředku firmwaru a poskytuje aktualizaci prostředku firmwaru, která je vyšší než aktuální verze firmwaru, bude zařízení čekat na restartování systému, aby bylo možné dokončit operaci aktualizace. Zařízení v tomto stavu bude indikovat, že je potřeba systém restartovat udržováním problému se zařízením, který brání spuštění a obnovení zařízení do stabilního stavu, dokud se restartování neprovádí.
Ověření stavu aktualizace firmwaru
Když je balíček ovladače firmwaru úspěšně nainstalován, PnP požádá o restartování systému, aby se aktualizace mohly použít. Po restartování je možné ověřit stav aktualizace. Stav aktualizace se udržuje pod následujícím klíčem registru: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\{RESOURCE_GUID}
.
RESOURCE_GUID je identifikátor GUID prostředku (z ESRT), který byl aktualizován.
Hodnota registru LastAttemptStatus označuje stav aktualizace firmwaru, kde hodnota 0 označuje úspěch a jakákoli nenulová hodnota představuje selhání. Hodnota tohoto klíče registru jsou kódy NTSTATUS naplněné nástrojem OS Loader na základě hodnoty LastAttemptStatus z ESRT. Následující tabulka mapuje kód LastAttemptStatus na odpovídající kód NTSTATUS.
StavPosledníhoPokus | Kód | NTSTATUS | Kód |
---|---|---|---|
Úspěch | 0 | STATUS_ÚSPĚCH | 0x00000000 |
Chyba: Neúspěšné | 1 | STATUS_NEÚSPĚŠNÝ | 0xC0000001 |
Chyba: Nedostatek prostředků | 2 | STAV_NEDOSTATEČNÉ_ZDROJE | 0xC000009A |
Chyba: Nesprávná verze | 3 | STAV_NESHODA_REVIZE | 0xC0000059 |
Chyba: Neplatný formát obrázku | 4 | STATUS_INVALID_IMAGE_FORMAT (Neplatný formát obrázku) | 0xC000007B |
Chyba: Chyba ověřování | 5 | STAV_PŘÍSTUP_ODMÍTNUT | 0xC0000022 |
Chyba: Událost napájení, AC není připojeno | 6 | STATUS_POWER_STATE_INVALID (Neplatný stav napájení) | 0xC00002D3 |
Chyba: Událost napájení, nedostatečná baterie | 7 | STATUS_NEDOSTATEČNÝ_VÝKON | 0xC00002DE |
Vlastnost ID hardwaru uzlu zařízení zdroje firmwaru by také měla odrážet změnu verze firmwaru, kde XXX je nová verze firmwaru.
- UEFI\RES_{RESOURCE_GUID}&REV_XXX
Pokud se aktualizace firmwaru nezdařila, můžete opakovat neúspěšnou aktualizaci firmwaru:
Ve Správci zařízení rozbalte uzel Firmware, klikněte pravým tlačítkem myši na zařízení firmware a klikněte na Aktualizovat ovladač.
Klepněte na tlačítko Procházet můj počítač pro software ovladače a na další stránce klepněte na možnost Vybrat ze seznamu ovladačů zařízení v mém počítači.
Vyberte stejný ovladač, který jste nainstalovali dříve, a klikněte na tlačítko OK.
Po dalším restartování bude zavaděč operačního systému volat do updateCapsule() s datovou částí balíčku ovladače firmwaru.
Související témata
definice tabulky ESRT
zařízení Plug and Play
vstupně-výstupních operací zařízení z prostředí UEFI