Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Diperlukan bahwa payload pembaruan untuk setiap sumber daya firmware yang dijelaskan dalam ESRT dibundel dan didistribusikan dalam paket drivernya sendiri sehingga memungkinkannya mempertahankan skema penerapan versinya sendiri tanpa terikat dengan pembaruan sumber daya firmware lain yang mungkin tidak diperbarui pada irama yang sama.
Contoh berikut menyediakan contoh definisi file INF paket driver untuk pembaruan sumber daya firmware yang menargetkan sumber daya {SYSTEM_FIRMWARE} dari contoh ESRT di Tabel 2, memperbaruinya dari versi 1 ke versi 2. Untuk tujuan referensi, mari kita asumsikan bahwa GUID yang ditetapkan untuk sumber daya SYSTEM_FIRMWARE adalah 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
Ubah bagian berikut untuk menyesuaikan penyiapan Anda.
[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]
Tabel berikut menjelaskan berbagai bagian dan bidang INF paket driver dengan referensi ke contoh definisi file INF paket driver di atas.
| Bagian/Bidang | Nilai | Komentar |
|---|---|---|
| [Versi] | Menentukan informasi versi paket driver. | |
| Penyedia | %Provider% = Contoso Inc. (dilokalkan di bagian [String] ) |
Mengidentifikasi penyedia/vendor seluruh paket driver pembaruan sumber daya firmware. |
| Kelas/ClassGuid | Firmware/ {f2e7dd72-6468-4e36-b6f1-6488f42c1b52} |
Menentukan tanggal paket driver. Tanggal dan versi harus mencerminkan tanggal dan versi pembaruan sumber daya firmware aktual sedekat mungkin untuk memastikan bahwa sistem penginstalan perangkat PnP dapat secara akurat memilih paket driver terbaik yang tersedia pada sistem. |
| CatalogFile | catalog.cat | Menentukan file katalog terkait yang menandatangani file INF paket driver dan semua biner pembaruan sumber daya firmware terkait. |
| PnpLockdown | 1 | Mengaktifkan mekanisme penguncian file driver PnP untuk melindungi file driver yang diinstal agar tidak dimodifikasi secara eksternal oleh aplikasi yang tidak terkait. Untuk pembaruan sumber daya firmware, pengaturan ini harus selalu diaktifkan untuk memastikan bahwa file gambar sumber daya firmware tidak dapat dirusak di luar kontrol sistem PnP |
| [Produsen] | Mencantumkan semua produsen/vendor driver berbeda yang menentukan pembaruan sumber daya firmware. Setiap lini produsen menentukan bagian [<Model]> dan mengidentifikasi platform target yang didukung. | |
| %MfgName% | Fabrikam Inc. (dilokalkan di bagian [String] ) |
Mengidentifikasi produsen/vendor pembaruan sumber daya firmware. Ini mungkin sama dengan bidang Penyedia. |
| Firmware NTarm64.10.0... 17134 |
Mengidentifikasi bagian [<Model]> yang menentukan perangkat sumber daya firmware yang didukung oleh paket driver ini, termasuk platform driver target mereka. Dalam contoh ini, driver hanya ditargetkan untuk platform NT berbasis Arm64 untuk build Windows 10 17134 dan yang lebih baru dan bagian [<Models>] adalah [Firmware.NTarm64.10.0...17134]. | |
| [Firmware.NTarm64.10.0... 17134] | Bagian [<Model>] untuk platform NT berbasis Arm64 pada Windows 10 build 17134 dan yang lebih baru yang mencantumkan semua perangkat firmware sumber daya yang pembaruannya telah ditentukan. Setiap baris model perangkat keras menentukan bagian [<DDInstall>] dan kecocokan ID perangkat keras terkait. | |
| %FirmwareDesc% | Fabrikam System Firmware 2.0 (dilokalkan di bagian [String] ) |
Menjelaskan pembaruan sumber daya firmware. Ini adalah string deskripsi utama yang digunakan untuk menyajikan instans perangkat sumber daya firmware terkait di Device Manager dan UI terkait perangkat lainnya. Untuk alasan ini, deskripsi dapat mencakup vendor dan versi firmware. |
| Instalasi_Firmware UEFI\RES_{RESOURCE_GUID} |
Mengidentifikasi bagian [<DDInstall] yang berisi langkah-langkah penginstalan untuk pembaruan sumber daya firmware yang menargetkan instans perangkat yang diidentifikasi oleh ID perangkat keras UEFI\RES_{RESOURCE_GUID}. Di mana RESOURCE_GUID adalah GUID sumber daya firmware yang sedang diperbarui. | |
|
[Firmware_Install.NT] CopyFiles = Firmware_CopyFiles [Firmware_CopyFiles] ... |
Bagian [<DDInstall>] yang berisi langkah-langkah penginstalan untuk pembaruan sumber daya firmware. Untuk pembaruan sumber daya firmware, ini hanya menentukan file gambar sumber daya firmware yang akan disalin untuk pembaruan. Dalam contoh ini, bagian [<DDInstall>] adalah [Firmware_Install.NT]. | |
| firmware.bin | Menentukan file gambar pembaruan sumber daya firmware untuk disalin. Lihat bagian [DestinationDirs] di bawah ini untuk detail tentang tempat file ini disalin. | |
|
[Firmware_Install.NT.Hw] AddReg = Firmware_AddReg [Firmware_AddReg] ... |
[<DDInstall>. Bagian Hw] yang berisi langkah-langkah penginstalan khusus perangkat keras untuk pembaruan sumber daya firmware. Untuk pembaruan sumber daya firmware, ini mendefinisikan informasi konfigurasi pembaruan sumber daya firmware dalam bentuk nilai registri yang ditetapkan di bawah kunci perangkat keras perangkat dari instans perangkat target. | |
| FirmwareId | {RESOURCE_GUID} | GUID firmware untuk pembaruan sumber daya firmware. Perhatikan bahwa ini adalah GUID sumber daya firmware yang sama yang disematkan dalam ID perangkat keras UEFI\RES_{RESOURCE_GUID}, namun harus ditentukan di sini sebagai nilai mandiri karena sistem PnP memperlakukan semua ID perangkat keras sebagai string buram yang benar-benar digunakan untuk tujuan pencocokan perangkat/driver. |
| Versi Firmware | 0x00000002 | Versi firmware dari pembaruan sumber daya firmware, ditentukan sebagai nilai REG_DWORD. |
| FirmwareFilename | %13%\firmware.bin | Pada Windows 10, versi 1803 dan yang lebih baru, ini harus menjadi file 'dioperasikan dari Driver Store' dan menyediakan jalur lengkap ke file biner seperti pada contoh. Sebelum Windows 10, versi 1803, ini harus berupa jalur relatif dan nama file firmware dari file gambar Update Capsule pembaruan sumber daya firmware di dalam direktori \Firmware dari %SystemRoot%, di mana {RESOURCE_GUID} merupakan subdirektori yang digunakan untuk mengatur semua file gambar firmware yang ditargetkan untuk sumber daya firmware tertentu. Misalnya, {RESOURCE_GUID}\firmware.bin. |
| [SourceDisksNames] | Mencantumkan semua lokasi disk sumber paket driver yang berbeda di mana file driver terkait, seperti file gambar sumber daya pembaruan firmware, dimuat. | |
| 1 | %DiskName% = Pembaruan Firmware (dilokalkan di bagian [String] ) |
Menentukan ID disk sumber paket driver bernomor arbitrer dan nama deskripsinya. Tidak ada subdirektori relatif paket driver opsional yang ditentukan sehingga file driver apa pun yang terkait dengan ID disk ini, seperti file gambar pembaruan sumber daya firmware, diharapkan untuk hidup langsung di samping file INF. |
| [SourceDisksFiles] | Mencantumkan semua file driver yang dirujuk oleh paket driver dan menautkannya ke ID disk dari bagian [SourceDisksNames]. | |
| firmware.bin | 1 | Menetapkan file gambar pembaruan sumber daya firmware firmware.bin sebagai bagian dari paket driver dengan menautkannya dengan ID disk utama. Tidak ada subdirektori khusus file opsional yang ditentukan sehingga file driver ini diharapkan hidup relatif terhadap subdirektori ID disknya, yang dalam hal ini tepat di samping file INF. |
| [DestinationDirs] | Mencantumkan direktori tujuan target dari semua file driver yang direferensikan oleh paket driver. | |
| DefaultDestDir | 13 | Menentukan direktori tujuan default dari semua berkas driver yang disalin oleh paket pengandar ini. Pada Windows 10, versi 1803 dan yang lebih baru, ini harus DIRID 13 untuk membuat file 'berjalan dari Driver Store'. Sebelum Windows 10, versi 1803, ini harus 10,Firmware\{RESOURCE_GUID} untuk menentukan bahwa tujuan semua file berada di dalam %SystemRoot%\Firmware, di mana 10 (DIRID_WINDOWS) mewakili direktori %SystemRoot% dasar dan {RESOURCE_GUID} mewakili subdirektori dengan nama mengikuti firmware sumber daya GUID. |
| [Strings] | Menentukan pemetaan kunci/nilai untuk semua token string tidak langsung (%token%) dalam file INF paket driver. Penggunaan token string memungkinkan file INF paket driver untuk dengan mudah dilokalkan dengan memperkenalkan bagian [Strings.<LanguageID>] yang spesifik untuk lokal. Ini juga dapat berguna untuk menggunakan penggantian token string untuk menentukan nilai numerik konstan, seperti REG_DWORD. | |
| Penyedia | "Contoso Ltd." | Contoh pemetaan kunci/nilai dari token tipe data string. |
Penting untuk menggunakan nama unik untuk setiap versi file gambar pembaruan sumber daya firmware untuk menghindari potensi tabrakan dengan file gambar firmware lainnya, baik milik Anda sendiri maupun dari vendor firmware lainnya. Misalnya, firmware.bin dari hal di atas harus diberi nama berikut untuk memenuhi batasan nama vendor dan versi: Fabrikam-System-Firmware-2.0.bin.
Untuk memastikan bahwa varian gambar pembaruan sumber daya firmware tertentu, yang berpotensi digunakan untuk tujuan kustomisasi OEM/IHV, tidak mengalami bentrokan saat diterapkan ke gambar sistem Windows yang sama, disarankan agar setiap gambar pembaruan sumber daya firmware yang berbeda merupakan file 'jalankan dari Penyimpanan Driver' (Windows 10, versi 1803 dan yang lebih baru) atau disimpan di bawah subdirektori dalam direktori %SystemRoot%\Firmware. Subdirektori ini harus dinamai sesuai dengan GUID sumber daya firmware target. Misalnya, jalur gambar pembaruan sumber daya firmware berikut memenuhi batasan penyebaran: %SystemRoot%\\Firmware\\{6bd4efb9-23cc-4b4a-ac37-016517413e9a}\\Fabrikam-System-Firmware-2.0.bin.
Menguji penandatanganan paket pengandar firmware
Setelah file INF paket driver dan berkas biner payload firmware siap, seluruh paket driver harus ditandatangani agar dapat menghasilkan file katalog. Sangat penting bahwa file katalog ini menjamin validitas dan keaslian file INF dan biner payload firmware yang terkandung dalam paket driver untuk memungkinkan Windows memulai pembaruan sumber daya firmware dengan aman.
Langkah-langkah untuk menandatangani sendiri paket driver untuk tujuan pengujian dijumlahkan di bawah ini. Harap dicatat bahwa langkah-langkah ini hanya untuk tujuan pengujian. Dalam produksi, paket driver pembaruan firmware harus dikirimkan ke Pusat Mitra untuk ditandatangani. Untuk langkah-langkah menandatangani paket driver firmware untuk produksi, lihat Mensertifikasi dan menandatangani paket pembaruan.
Instal Windows SDK dan Windows Driver Kit (WDK) terbaru.
- Windows SDK menginstal alat seperti
makecert, ,pvk2pfxdansigntool. - Windows Driver Kit (WDK) menginstal alat khusus driver seperti
Inf2Cat.
Anda biasanya dapat menemukan alat-alat ini di bawah direktori penginstalan Windows Kits, misalnya:
%WindowsSdkDir%\bin\<version>\x86(ataux64)Nota
Folder versi SDK yang tepat dan set alat yang tersedia bergantung pada komponen Windows SDK/WDK yang diinstal.
- Windows SDK menginstal alat seperti
Jalankan perintah berikut untuk membuat sertifikat pengujian.
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.pfxUntuk informasi selengkapnya, lihat MakeCert.
Jalankan perintah berikut untuk membuat file katalog.
Inf2Cat.exe /driver:"." /os:8_x64Argumen /driver menunjuk ke lokasi tempat INF berada. Ubah nilai argumen /os tergantung pada OS tempat paket driver firmware ditujukan. Untuk informasi selengkapnya, lihat Inf2Cat.
Untuk informasi selengkapnya tentang katalog dan driver keamanan, lihat File Katalog dan Tanda Tangan Digital dan Membuat File Katalog untuk Paket Driver PnP.
Jalankan perintah berikut untuk menandatangani file katalog.
signtool sign /fd sha256 /f fwu.pfx /p <Password entered during makecert prompt> delta.catUntuk informasi selengkapnya, lihat SignTool.
Instal sertifikat pengujian pada sistem pengujian:
Klik dua kali pada file fwu.cer dan pilih opsi Instal Sertifikat .
Pilih opsi berikut selama penginstalan sertifikat:
Untuk Lokasi toko, pilih Komputer Lokal.
Untuk Penyimpanan Sertifikat, telusuri dan pilih Otoritas Sertifikasi Akar Tepercaya.
Nonaktifkan boot aman di opsi firmware/BIOS.
Aktifkan penandatanganan uji dalam opsi BCD sehingga pemuat OS dapat memuat file gambar firmware (firmware.bin) selama boot meskipun katalog tidak ditandatangani sebagai produksi. Jalankan perintah berikut dengan hak istimewa administrator:
bcdedit /set testsigning on
Setelah paket driver ditandatangani, paket tersebut dapat diinstal menggunakan salah satu mekanisme berikut:
Manajer Perangkat. Untuk pengujian manual, Device Manager menyediakan antarmuka yang ramah untuk menemukan perangkat sumber daya firmware dan memperbarui drivernya untuk memulai pembaruan sumber daya firmware.
Temukan perangkat sumber daya firmware yang diinginkan di bawah kelas "Firmware" saat melihat perangkat berdasarkan jenis, atau di bawah perangkat "Microsoft UEFI-Compliant System" saat melihat perangkat dengan koneksi.
Klik kanan pada perangkat sumber daya firmware dan pilih "Perbarui Perangkat Lunak Driver..." pilihan.
Gunakan opsi "Telusuri komputer saya untuk perangkat lunak driver" untuk menemukan dan menginstal paket driver pembaruan sumber daya firmware yang lebih baru ke perangkat sumber daya firmware. Operasi ini akan memastikan bahwa paket driver pembaruan sumber daya firmware yang ditentukan sebenarnya lebih baru dari paket driver pembaruan sumber daya firmware yang ada yang mungkin sudah ada di perangkat sumber daya firmware sebelum menambahkannya ke Windows Driver Store dan memulai penginstalan.
pnputil. Untuk pengujian otomatis, utilitas baris perintah PnpUtil dapat digunakan dari prompt perintah dengan hak administrator untuk mengimpor paket driver pembaruan sumber daya firmware ke Storan Driver Windows dan memulai penginstalan perangkat pada semua perangkat firmware yang sesuai yang saat ini menggunakan versi lama dari sumber daya firmware, sebagaimana ditentukan oleh DriverVer dari file INF paket driver yang saat ini diinstal atau kurangnya file INF yang disediakan oleh pihak ketiga sepenuhnya. Misalnya, gunakan baris perintah berikut untuk menambahkan dan menginstal X:\firmware.inf:
pnputil -i -a X:\firmware.inf
Jika pembaruan sumber daya firmware berhasil diinstal pada perangkat sumber daya firmware dan menyediakan pembaruan sumber daya firmware yang merupakan versi yang lebih tinggi dari versi firmware saat ini, maka perangkat akan menunggu boot ulang sistem untuk menyelesaikan operasi pembaruan. Perangkat dalam status ini akan menunjukkan kebutuhan sistem untuk di-boot ulang dengan mempertahankan masalah perangkat, yang mencegah perangkat dimulai dan dipulihkan ke keadaan stabil sampai boot ulang dilakukan.
Memvalidasi status pembaruan firmware
Ketika paket driver firmware berhasil diinstal, PnP akan meminta reboot sistem untuk menerapkan pembaruan. Pasca boot ulang, status pembaruan dapat divalidasi. Status pembaruan dipertahankan di bawah kunci registri berikut: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\{RESOURCE_GUID}.
RESOURCE_GUID adalah GUID sumber daya (dari ESRT) yang diperbarui.
Nilai registri "LastAttemptStatus" menunjukkan status pembaruan firmware, di mana nilai 0 menunjukkan keberhasilan dan nilai bukan nol mewakili kegagalan. Nilai untuk kunci registri ini adalah kode NTSTATUS yang diisi oleh OS Loader berdasarkan nilai LastAttemptStatus dari ESRT. Tabel berikut memetakan kode LastAttemptStatus ke kode NTSTATUS yang sesuai.
| LastAttemptStatus | Kode | NTSTATUS | Kode |
|---|---|---|---|
| Keberhasilan | 0 | STATUS_SUCCESS | 0x00000000 |
| Kesalahan: Tidak berhasil | 1 | STATUS_UNSUCCESSFUL | 0xC0000001 |
| Kesalahan: Sumber Daya Tidak Mencukup | 2 | STATUS_INSUFFICIENT_RESOURCES | 0xC000009A |
| Kesalahan: Versi salah | 3 | KETIDAKCOCOKAN_REVISI_STATUS | 0xC0000059 |
| Kesalahan: Format Gambar Tidak Valid | 4 | STATUS_FORMAT_GAMBAR_TIDAK_VALID | 0xC000007B |
| Kesalahan: Kesalahan Autentikasi | 5 | STATUS_AKSES_DITOLAK (ACCESS_DENIED) | 0xC0000022 |
| Kesalahan: Peristiwa Daya, AC Tidak Tersambung | 6 | Status_Tenaga_Tidak_Sah (note: keep the original if needed in a technical or user interface context) | 0xC00002D3 |
| Kesalahan: Peristiwa Daya, Baterai Tidak Mencukupi | 7 | status_daya_tidak_cukup | 0xC00002DE |
Properti ID Perangkat Keras dari simpul perangkat sumber daya firmware juga harus mencerminkan perubahan dalam versi firmware, di mana XXX adalah versi firmware baru.
- UEFI\RES_{RESOURCE_GUID}&REV_XXX
Jika pembaruan firmware gagal, Anda dapat mencoba kembali pembaruan firmware yang gagal:
Di Manajer Perangkat, perluas simpul Firmware, klik kanan perangkat sumber daya firmware, dan klik Perbarui Perangkat Lunak Driver.
Klik Telusuri komputer saya untuk mencari peranti lunak pengandar, dan pada halaman berikutnya klik Izinkan saya memilih dari daftar pengandar perangkat di komputer saya.
Pilih driver yang sama dengan yang Anda instal sebelumnya, dan klik OK.
Setelah boot ulang berikutnya, OS Loader akan memanggil UpdateCapsule() dengan payload paket driver firmware.
Topik terkait
Perangkat I/O dari lingkungan UEFI