Kernel Mode Driver Framework

WHQL測試流程


參考資訊:
1. windows-hlk-getting-started
2. evaluate-hyper-v-server-2012
3. evaluate-hyper-v-server-2016
4. How-to-use-Hyper-V-under-Windows-10-Wi-Fi-and-DHCP

司徒依稀記得第一次測試WHQL大約是在2003年左右,當初使用的測試方式是,準備兩台雙核CPU的電腦,然後使用網路連接測試,一台是Controller主機,另一台則是Client主機,每測試完一個系統後,就會使用Ghost開機光碟,將Client主機倒回其它測試系統,就這樣把需要測試的系統全部測完,測試的時間也很長,一個系統大約需要一天的測試時間,過程遇到錯誤,一般都是使用Rerun或者上Patch解決,印象最深刻的,還是費用高昂這件事情,難怪MS一般都會被縮寫成M$,也不是沒有道理的!

如今司徒剛好又有那樣的機緣,可以跑WHQL測試流程,就順便紀錄下整個安裝以及測試過程,以供日後參考使用,目前使用的機器已經是很高檔的Dell R640機器(CPU:24核心,RAM:128GB, DISK:1TB),而且最方便的是,可以透過Hyper-V做虛擬機測試(不建議使用VirtualBox、VMware),因此,整體測試就可以單純許多。

司徒使用Windows Server 2019當作主力系統並且啟動Hyper-V服務,然後把Controller、Client系統都安裝在Hyper-V

PS > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All

HLK、HCK安裝建議

ControllerClient
HLKWindows Server 2016 (HLK v2004) Windows 10 20H2
(HLK v2004) Windows 10 2004
(HLK v1903) Windows 10 1909
(HLK v1903) Windows 10 1903
(HLK v1809) Windows 10 1809
(HLK v1809) Windows Server 2019
(HLK v1803) Windows 10 1803
(HLK v1709) Windows 10 1709
(HLK v1703) Windows 10 1703
(HLK v1607) Windows 10 1607
(HLK v1607) Windows 10 1511
(HLK v1607) Windows 10 1507
(HLK v1607) Windows Server 2016
HCKWindows Server 2012 Windows 7
Windows 8
Windows 8.1
Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
WLKWindows Server 2012 Windows Server 2003
Windows Server 2008

P.S. Windows XPWindows 2000Windows Vista這三個系統,目前不需要跑WHQL測試,在Submission時,就可以勾選,而測試的系統(如:Windows 7),如果遇到沒有測試選項在Tests頁面,直接打包就可以,不需要測試

接著需要先設定Hyper-V NAT網卡,只要新增一張connection typeInternal network網卡,名稱可以隨意取名


接著就可以看到新增的網卡


接著將原本的主要網卡(如:NIC1),設定成可以分享


Hyper-V NAT網卡自動配置的IP


接著透過Hyper-V先安裝Controller系統:
1. 建議RAM 2GBDISK 60GB
2. 關閉Windows Firewall
3. 關閉Windows AntiVirus
4. 關閉Windows Defender
5. 開啟網路芳鄰(SMB Service),記得開啟相關服務

P.S. 如果遇到Hyper-V NAT網卡無法連網,可以交互Enable、Disable原本網卡(NIC1)以及Hyper-V NAT網卡,如果還是不行,可以重新建立Hyper-V NAT網卡,因為Hyper-V的網路真是不敢領教...,出錯的問題可能是Microsoft NDIS Packet Capture Filter Driver,目前建議可以把HCK/HLK先下載到資料夾,然後再透過網路芳鄰複製到Controller主機安裝,因為沒有連外網的情況下,也是可以測試WHQL

接著安裝HLK或者HCK(依照測試選項)





接著安裝Client系統:
1. 建議RAM 2GBDISK 60GB
2. 關閉Windows Firewall
3. 關閉Windows AntiVirus
4. 關閉Windows Defender
5. 開啟網路芳鄰(SMB Service),記得開啟相關服務
6. 開啟BCD設定並且重新開機

c:\> bcdedit.exe /set testsigning on
c:\> bcdedit.exe /set bootstatuspolicy ignoreallfailures
c:\> bcdedit.exe /set bootmenupolicy legacy

7. 掛載需要的檔案系統(FSFilter Driver測試需要,可以使用fltmc指令查看是否為FSFilter Driver)

8. 安裝測試的驅動程式,由於BCD已經開啟TESTSIGNING,因此,驅動程式只需要有一個簡單的測試簽章即可安裝使用,如何製作個人測試簽章,請參考這裡,必須注意的是,INF必須先使用INF2CAT檢查,否則在打包WHQL結果時,會有錯誤訊息
9. 接著在Client安裝HLK或者HCK,安裝的方式則是透過Controller的網路芳鄰資料夾(HLKInstall > Client > Setup.cmd/Setup.exe)





10. 接著,登出目前帳號,因為WHQL會有一組測試的帳號登入使用

接著在Controller開啟HLK Studio


選擇Configuration



Create Machine Pool


接著把Default Pool的測試機器拉到新增的Pool裡面,如果發生怎麼拖拉都會出現錯誤時,重新開啟HLK Studio即可


接著按滑鼠右鍵,設定成Ready


等待狀態變成READY


接著返回主頁,然後Create Project




切到Selection頁面,並且選擇剛剛新增的Pool,接著點選左邊的software device,選擇要測試的驅動程式,如果沒有找到,請確定該驅動程式已經安裝完成且為啟動狀態,如果還是不行,可以重新啟動該台測試Client機器,接著記得重新配置成READY狀態,多測試幾次就可以


勾選全部測試選項,如果沒有任何測試選項可以勾選,例如:Win7系統,則代表不需要測試,也就是Results代表已經PASS


接著,按下Run Selected


測試中,請不要去操作Client機器,避免發生錯誤


完成後,所有的選項都需要PASS,如果有選項錯誤,可以切到Results頁面查看問題,一般來說,SLEEP或者PNP問題,重新跑幾次就可以或者將DVD Drive移除,如果都還是無法PASS,可以上網找尋解法


Results頁面,可以查看細部測試項目


接著準備打包測試結果


由於不同的Windows作業系統,需要使用不同的HLK/HCK版本做測試,因此,通常會有多份測試結果需要做合併的動作,如果沒有合併,則每個各別Submission的驅動程式,將只能安裝在有測試的系統上,因此,點選Merge Package做合併的動作,如果目前這個HLK/HCK不是要做最後合併的動作,則只要點選右下方的Create Package



選擇Add加入從其它HLK/HCK測試的結果


接著選擇Add Driver Folder


P.S. 值得注意的是,在Windows 7系統上,Microsoft簽章必須放在第一個位置,因為Windows 7只認得第一個欄位的簽章,因此,在Add Driver Folder之前,請先移除測試簽章,如何移除請參考如何移除已經簽章的驅動程式

加入Driver Folder後,會顯示有測試的Windows作業系統,記得全部勾選


Locales頁面也記得全部勾選


接著,選擇Create Package



Do not sign


完成後,就把這包結果Submit到Microsoft做簽章的動作

P.S. 在Submit xxx.hlkx時,記得要先經過有效的簽章(公司簽章),否則Submission Portal會提示無效的格式

如下是司徒Submit的結果,可以看到Windows XP、Windows 2000、Windows Vista這三個系統,在Submission時,就可以勾選,Certification部份則是有跑過WHQL測試的系統


返回上一頁