[096] 增加 CHID 讓裝置驅動程式可透過 Windows Update 安裝
Update on 2017-03-16: Microsoft 慢慢將系統轉移至新的 Microsoft Hardware Dev Center,CHID「上架」流程有所改變,介面設計變好了,請參照新文章。
前陣子有個 Windows 驅動程式的開發需求:
裝置驅動程式必須能讓終端電腦透過 Windows Update 自動安裝與更新。
為滿足此需求必須具備以下條件:
- 驅動程式需通過 Windows HLK(名字常換,別理會) 一系列測試
- HLK 測試通過後將結果加上**數位簽章(需要 Code Signing Certificate)**後上傳到 Hardware Dev Center
- 以前只要求 Code Signing Certificate,現在則需要 Extended Validation (EV) Code Signing Certificate,最大的差異就是比較貴
- 欲購買 Code Signing Certificate,我推薦便宜好用的 DigiCert。參考我先前的文章,內有 DigiCert 全系列五折優惠
- 利用 Driver Distribution 把驅動程式發佈到 Windows Update
WHQL 歷來的改變
- 以前 WHQL 認證要收費,記得單一平台是 $250 鎂。現在則是完全免費(不計較 Code Signing Certificate)
- 以前都用 Hardware ID 來匹配硬體裝置,現在有可能需要搭配 CHID(本文重點) 才行。
- 幾乎每次 Windows 大改版,硬體認證都會有所變動,以及工具更名之類(WLK, HCK, HLK)的。
Hardware ID
多數時候,只要裝置的 Hardware ID 即能上架到 Windows Update。但這次遇到的案例比較特別,與微軟官方書信往來一陣後,發現原本非必要(Optional)的 CHID(Computer Hardware ID) 在這個案子中變成了必要條件。Hardware ID 相關資料請參考官方文件:
Computer Hardware ID
CHID(Computer Hardware ID)是收集電腦上 SMBIOS 中的若干欄位來產生一組 GUID,再將它放到 INF 檔案裡或上傳到 Hardware Dev Center。WDK 內含的 ComputerHardwareIds.exe
可用來產生 CHID。
ComputerHardwareIds.exe
可以挑選要用哪些 SMBIOS 欄位來當做產生 CHID 的參數。詳情請見官方文件:
Publish to Windows Update
我遇到的情況是驅動程式已經提交而且通過認證,原本可以透過 WU 安裝與更新驅動程式,但在 Windows 10 之後出問題了。詢問微軟得到需加入 CHID 才能解決這個問題,底下一步一步說明如何把 CHID 加到特定的 Submission。
① 進到 Driver distribution 頁面,並選取 Manage driver distribution by devices
② 選擇裝置
③ 點選 Submission ID(同一個裝置可以有一或多個 Submission ID)
④ 點選 Change Distribution Settings
按鈕
⑤ 點選 Change Settings
按鈕
⑥ 於跳出對話框內的下拉式選單選取 Distribute
後其他欄位不用填,按 Save
按鈕
⑦ 按下原本不能按的 Next
按鈕
⑧ 點選 Bundle xxxx
然後點選下方出現的 Edit
按鈕
⑨ 將 CHID(不含 {}
)填到下圖箭頭所指的欄位,按下 Add
鈕後按 Save
鈕
⑩ 最後按 Save
鈕,然後按 Submit
鈕
沒有問題的話,會看到 Distribution Status
欄位呈現 Publishing in Progress
字樣就算大功告成,接下來等候幾個小時,通過後,Distribution Status
呈現 Distributed
。