[220] 關於 WHLK 以及硬體認證的一些事

我第一次接觸微軟硬體認證是在認證一次,一個平台收費 $250 鎂的時代。後來微軟佛心來著,硬體認證變成免費服務了。這篇文章說明安裝以及使用硬體以及驅動程式認證專用軟體與環境架設的一些小事。

為了取得 Microsoft「貼紙」以及讓使用者更「安心」,硬體廠商必須替驅動程式取得 WHQL 認證,取得認證的驅動程式檔案會加上微軟的「數位簽章」,用以昭告全世界雙方的親密關係。

以前沒認證過的驅動程式會跳出警告視窗,但還是可以被系統載入,但在轉移至 64-bit 後,微軟「來了一手」,除了跳出警告視窗,而且不會被 Windows 載入,使用者會很不爽,然後廠商就會乖乖地認證。好險,現在是免費服務了。

言歸正傳。為了送驅動程式給微軟「過目」,有一些條件必須滿足。否則一些阿狗阿貓亂送一通,免費資源可不能這麼亂用。

首先,要購買數位簽章(Code Signing Certificates),然後替所有驅動程式包裡的檔案,如 .sys, .dll, .exe 加上簽章。並且在建立 Hardware Dev Center 帳號後,送第一個認證前,利用該簽章來證明你的身份。

Code Signing Certificates 有優惠

Code Signing Certificates 去哪裡買?我推薦 DigiCert。在你衝到 DigiCert 下單前,有件事你必須知道。使用這個連結到 DigiCert 下單,可以用半價,對,五折的優惠價購買原價一年 $449 的 EV Code Signing Certificate。省下六千台幣,一次買三年,省更多

對了,以前微軟只要求 Code Signing Certificate,去年開始要求 EV Code Signing Certificate。而取得 EV Code Signing Certificate 的過程較繁鎖,也較貴,DigiCert 會打電話問你一些問題才會同意發 EV Code Signing Certificate。

使用 EV Code Signing Certificate 簽章時,該電腦必須要有 FIPS 140-2 Level 2 相容的裝置。就是一支特別的 USB 隨身碟,購買憑證時,可以請 DigiCert 寄一支給你(忘了需不需要額外付費了)。

用簽章證明身份的方法很簡單,大概就是在 Hardware Dev Center 下載一個檔案,然後對那個檔案加上你的數位簽章,最後上傳到 Hardware Dev Center 即可。

安裝 Hardware Lab Kit

完成驅動程式驗證前的測試是必備工作,藉此取得一包東西用以上傳至 Hardware Dev Center。測試環境需要至少兩台電腦,一台安裝 HLK Controller+Studio,一台安裝 HLK Client,HLK Studio 也可安裝在其他電腦。微軟提供的環境需求提到上述環境皆不能安裝在虛擬機上(Hyper-V, VirtualBox, VMware, etc)。但根據不能具名的微軟人士透露,若是預算有限沒那麼多機器可以,其實虛擬機是可行的手段。我沒試過,所以無法確認可行性。

HLK Controller 必須安裝在 Windows Server 上,支援 Windows 2008 以後的版本,挑 64-bit,不能用 Server Core,記得避開 Windows Server, version 1709。

有一點特別留意。由於待測機器(Client)可透過網路安裝 HLK Client,因此 HLK Controller 所在的「電腦名稱」相當重要。預設安裝時的電腦名稱是沒有意義的隨機字串,很難記,最好在安裝 HLK Controller 前先改成好記的名字。若是在安裝 HLK Controller 之後才改名,則 HLK Controller 啟動時會遇到無法連接到資料庫的錯誤而無法正確啟動。我沒仔細找解法,遇到時移除 HLK Controller 即可解決。笨,但有效。

目前為止,HLK 的版本約有四個。而且不是最新版包含舊版的那種設計,依照你的產品支援的作業系統,最慘的情況是這四個版本都會用到。所有四個版本皆可在此頁面下載

HLK Controller 安裝過程很簡單,就是傳統的精靈式安裝法。運氣好的話,不到三十分鐘(含下載)就能安裝完成。但是,安裝完成後要記得做一件事`--套用 Windows HLK Filters

我不確定原因,但是這個動作自古以來就是要「手動」進行。操作很簡單,就是下載一個 .cab 檔,這是一個壓縮檔,解開後將裡面的 UpdateFilters.sql 複製到 HLK Controller 的安裝路徑,百分之九十九的機率其路徑為:

  • %Program Files (x86)%\Windows Kits\10\Hardware Lab Kit\Controller

複製過去後,在同一個目錄底下執行 UpdateFilters.exe 的程式,不到一分鐘即完成套用 Hardware Lab Kit Filters。

使用 HLK

每一個類型的驅動程式,如 Keyboard, HID Device, File System Filter Driver,有不同的測試內容。而每一個版本的 HLK 都有相對應的 Hardware Compatibility playlist。在開始測試前需要套用相應的 Compatibility playlist,用以過濾不必要的測試項目。

進行測試時,你必須要有另一台電腦安裝你的驅動程式欲支援的作業系統。去年微軟宣佈,HLK 的版本必須與作業系統相對應,HLK 1803 只能測 Windows 10 1803 環境,不能測試 Windows 10 1709 或以前的版本。這也是為什麼前面說 HLK 的四個版本可能都會用到的原因。

Test Distribution

驅動程式在發佈後,廠商可以選擇要不要讓驅動程式出現在 Windows Update。放在 WU 上的驅動程式,使用者的系統會以 Hardware ID or CHID 來匹配後,自動安裝驅動程式。

微軟提供一個 Test Distribution 的機制用來讓廠商在公開釋出前進行小規模測試。只要在待測電腦加上一個 Registry Key,即可開始進行測試。詳情請見此頁面

最後,微軟上個月公開了 Hardware Dev Center Dash submittion REST API,讓開發者有機會撰寫程式管理認證。

參考資源


《大山姆的機機車車》電子報

我是山姆。㊁◯㊀㊇年初我發行了個人電子報,提供軟體開發資訊與學習資源,還有軟體工具介紹及使用技巧,其中包含了我在 WorkFlowy Tips 上發佈的最新文章。如果你跟我一樣求知若渴,又不想花太多時間「過濾」資料,每月兩期,著重在 C++ 與軟體開發議題的《大山姆的機機車車》電子報。資訊充滿,垃圾沒有,歡迎訂閱。

CTO of I³D Technology Inc. 🇹🇼 ▐ Blogging at https://samtsai.org ▐ Playing WorkFlowy at http://workflowy.tips/ ▐ Learn what I am doing: https://samtsai.org/now/