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.
Artikel ini menjelaskan cara memperbarui firmware perangkat yang dapat dilepas atau dalam sasis menggunakan layanan Windows Update (WU). Untuk informasi tentang memperbarui firmware sistem, lihat platform pembaruan firmware Windows UEFI.
Untuk memperbarui firmware perangkat menggunakan Windows Update, berikan driver perangkat yang menyertakan isi firmware. Jika Anda menyediakan driver fungsi untuk perangkat Anda, Anda dapat menambahkan logika pembaruan firmware dan payload ke driver yang ada, atau Anda dapat menyediakan paket driver pembaruan firmware terpisah. Jika perangkat Anda menggunakan driver yang disediakan Microsoft, Anda harus menyediakan paket driver pembaruan firmware terpisah. Dalam kedua kasus, paket driver pembaruan firmware harus universal.
Untuk informasi selengkapnya tentang driver Universal, lihat Menggunakan File INF Universal. Biner driver dapat menggunakan KMDF, UMDF 2, atau Windows Driver Model.
Karena WU tidak dapat menjalankan perangkat lunak, driver pembaruan firmware harus menyerahkan firmware ke Plug and Play (PnP) untuk penginstalan.
Tindakan pembaruan firmware oleh driver
Biasanya, driver pembaruan firmware adalah driver perangkat ringan yang menerapkan prosedur berikut:
Saat perangkat mulai atau dalam fungsi callback EVT_WDF_DRIVER_DEVICE_ADD driver:
- Identifikasi perangkat tempat driver terpasang.
- Tentukan apakah driver memiliki versi firmware yang lebih baru daripada versi pada firmware yang saat ini di-flash pada perangkat keras perangkat.
- Jika pembaruan firmware diperlukan, atur timer peristiwa untuk menjadwalkan pembaruan.
- Jika tidak, biarkan saja sampai driver dimulai lagi.
Selama waktu operasi sistem.
- Jika pembaruan diantrekan, tunggu sekumpulan kondisi terpenuhi.
- Ketika kondisi terpenuhi, lakukan pembaruan firmware pada perangkat.
Konten driver pembaruan firmware
Biasanya, paket driver pembaruan firmware berisi item berikut:
- Universal Driver INF
- Katalog driver
- Driver fungsi (.sys atau .dll)
- Biner payload pembaruan firmware
Kirim paket pembaruan firmware Anda sebagai pengiriman driver terpisah.
Menambahkan logika pembaruan firmware ke driver yang disediakan vendor
Driver fungsi yang ada dapat menerapkan mekanisme pembaruan firmware, seperti yang ditunjukkan dalam diagram berikut:
Atau, jika Anda ingin memperbarui driver fungsi dan driver pembaruan firmware secara terpisah, buat simpul perangkat kedua, tempat Anda menginstal driver pembaruan firmware. Diagram berikut menunjukkan bagaimana satu perangkat dapat memiliki dua simpul perangkat terpisah:
Node perangkat fungsi dan firmware harus memiliki ID perangkat keras yang berbeda agar dapat ditargetkan secara independen.
Ada beberapa cara untuk membuat simpul perangkat kedua. Jenis perangkat tertentu memiliki kemampuan untuk mengekspos node perangkat kedua pada satu perangkat fisik, seperti USB. Anda dapat menggunakan fungsionalitas ini untuk membuat simpul perangkat yang dapat ditargetkan oleh WU, dan menginstal driver pembaruan firmware di atasnya. Namun, banyak jenis perangkat tidak mengizinkan satu perangkat fisik untuk menghitung lebih dari satu node perangkat.
Dalam hal ini, gunakan INF ekstensi yang menentukan direktif AddComponent untuk membuat simpul perangkat yang ditargetkan oleh Windows Update, dan instal driver pembaruan firmware di atasnya. Cuplikan berikut dari file INF menunjukkan bagaimana Anda dapat melakukan ini:
[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, PCI\DEVICE_ID
[Device_Install.Components]
AddComponent=ComponentName,,AddComponentSection
[AddComponentSection]
ComponentIDs = ComponentDeviceId
Dalam sampel INF, ComponentIDs = ComponentDeviceId
menunjukkan bahwa perangkat anak memiliki ID perangkat keras .SWC\ComponentDeviceId
Saat diinstal, INF ini membuat hierarki perangkat berikut:
Untuk pembaruan firmware di masa mendatang, perbarui INF dan file biner yang berisi payload firmware.
Menambahkan logika pembaruan firmware ke driver yang disediakan Microsoft
Untuk memperbarui firmware untuk perangkat yang menggunakan driver yang disediakan Microsoft, buat simpul perangkat kedua, seperti yang ditunjukkan.
Praktik terbaik
Dalam INF driver pembaruan firmware Anda, tetapkan DIRID 13 sehingga PnP menyimpan file dalam paket driver di DriverStore.
[Firmware_AddReg] ; Store location of firmware payload HKR,,FirmwareFilename,,"%13%\firmware_payload.bin"
PnP menyelesaikan lokasi ini ketika menginstal perangkat. Driver kemudian dapat membuka kunci registri ini untuk menentukan lokasi payload.
Driver pembaruan firmware menentukan entri INF berikut:
Class=Firmware ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
Untuk menemukan simpul perangkat lain, driver firmware harus menelusuri pohon perangkat relatif terhadap dirinya sendiri, bukan dengan mengidentifikasi semua simpul perangkat untuk mencocokkan. Pengguna mungkin telah menyambungkan beberapa instans perangkat, dan driver firmware hanya boleh memperbarui perangkat yang terkait dengannya. Biasanya, simpul perangkat yang akan ditemukan adalah induk atau saudara kandung dari simpul perangkat tempat driver firmware diinstal. Misalnya, dalam diagram dengan dua simpul perangkat, driver pembaruan firmware dapat mencari perangkat saudara untuk menemukan driver fungsi. Dalam diagram berikutnya, driver firmware dapat mencari perangkat induk untuk menemukan perangkat utama yang perlu dikomunikasikan.
Driver harus kuat untuk beberapa instans perangkat yang ada di sistem, mungkin dengan beberapa versi firmware yang berbeda. Misalnya, mungkin ada satu versi dari perangkat ini yang telah terhubung dan diperbarui beberapa kali. Perangkat baru kemudian dapat dicolokkan di mana ada beberapa versi firmware lama. Ini berarti bahwa status (seperti versi saat ini) harus disimpan terhadap perangkat, dan bukan di lokasi global.
Jika ada metode yang ada untuk memperbarui firmware (EXE atau penginstal bersama, misalnya), Anda sebagian besar dapat menggunakan kembali kode pembaruan dalam driver UMDF.