背景
在Windows OS上,Microsoft為了嚴格檢查每隻Driver的合法性,所以有了所謂的Microsoft簽名檔或是其他家被認可的公司的簽名檔。一支合法的Driver包含了至少三個檔案:xxx.sys、xxx.inf、xxx.cat(有些需要configuration的driver例如camera driver還會有額外.CPF檔)。由原始碼編譯而成的主要Driver Binary是.SYS,而其參數設定則寫在.INF檔。但另外可以看到還有一個.CAT檔案,這檔案就是Windows OS在安裝driver時會去檢查此driver是否合法的依據。對xxx.cat檔點滑鼠右鍵選Properties可以看到在Digital Signatures標籤下有Microsoft的簽名,因此這支Driver就可以安裝在一般Windows OS上。
假如手上已經有這三個檔案(.SYS、.INF、.CAT),可是為了需求變更而得修改.INF檔時,.CAT就得重新申請並取得Microsoft的認可,也就是說得從Microsoft那裡取得一個新的.CAT檔。
檢查Submission ID
上一段提到的Submission ID在DUA過程中是非常重要的一組代號,最初driver在送交Microsoft審核所使用的ID可以在.CAT裡面查到。步驟:
微軟DUA申請流程
步驟:
- 連結網址:https://sysdev.microsoft.com/en-US/Hardware/member/ (需事先向微軟申請通過)
- 可以看到微軟開發者中心的Dashboard
- 點擊 "Hardware certification" 底下的 "Manage submissions"
- 在Submission ID搜尋欄位中填入ID欲修改之Driver ID,接著按搜尋鈕
- 接著可以看到此Submission ID所對應的申請內容、從Microsoft取得的簽名.CAT檔以及其當初送審的device HCK (Hardware Certification Kit)報告連結、還有一個"Resell this submission"功能(留待之後介紹)
- 假如對此driver的修改僅限於.INF檔裡的設定更動,例如audio driver調整預設音量,則無須重跑Hardware Certification來取得HCK報告。因此可以直接點選"DUA shell package"來下載原始driver送審用的HCK報告,因為送審新driver的時候會被要求附上HCK報告。本例中會下載一個名為1663407_DUA.hckx的檔案
- 之所以需要送DUA就是因為有更動driver的INF或CPF檔,因此要將新的檔案連同整包driver併入剛下載的.HCKX檔一起送審。作法是先啟用HCK Studio(不要直接對.HCKX檔連點兩下),再來從Package這裡打開剛下載的.HCKX檔案。最下面的選項記得勾選"Driver Update"
- 開啟.HCKX檔之後會看到此畫面
- 點選上面Package,對"Drivers Folder"下的檔案點滑鼠右鍵,接著選"Replace Driver"(看不到此選項代表之前可能是以連點滑鼠兩下的方是開啟.HCKX檔),接著選取完整的driver資料夾。最後一步記得選擇"Do not sign"
- 上步驟完成後會所產生的.HCKX檔是沒有簽過名的,等會送DUA時,上傳此檔案會跳出錯誤訊息
- 所以還要使用SignTool賦予.HCKX檔自己公司的簽名(各家公司都會向微軟申請一組自己公司專用的簽名),方法可參考http://msdn.microsoft.com/en-us/library/windows/hardware/ff551778(v=vs.85).aspx
- 準備好要更改的.INF檔以及原始driver的.SYS檔後,點選"Upload driver update (DUA)"開始申請新的微軟簽名
- 選擇已經簽過名的.HCKX檔,然後下一步
- 接著會要求你填入此driver在公司裡是隸屬哪個部門管理或開發
- 按下Confirm鈕
- 最後還需再上傳一次剛剛送審的.HCKX檔
- 全部完成後,它會請你等待4~8小時,但實際上成功的話,只需要等半小時到一小時就可以拿到簽完名的.CAT檔。回到Submission ID的Summary頁面,點選"Signed files"就可以取得簽完名的.CAT
沒有留言:
張貼留言