2014年10月17日 星期五

[Driver] How to Submit DUA (with .INF Change Only)

背景

在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檔。

早在開發driver完畢並且向Microsoft申請.CAT檔前,開發者必須先對自己的driver進行所謂的HCK測試。待測試順利通過後,才會在申請時,將一個.HCKX檔案的測試報告附上。申請過程中會取得一組Submission ID,Microsoft會使用此Submission ID來追蹤此driver的申請進度。重要的是未來如果有需要更改此driver的.INF設定時,必須使用相同的Submission ID。這種更新driver並重新申請.CAT簽名檔的過程就叫做DUA(Device Update Agent)。在此只介紹單純更改.INF設定檔後的流程。

檢查Submission ID

上一段提到的Submission ID在DUA過程中是非常重要的一組代號,最初driver在送交Microsoft審核所使用的ID可以在.CAT裡面查到。
步驟:
  1. 雙點擊.CAT檔可以看到
  2. 約略在由上往下數第三個綠色小圖示上點擊一下,可以看到如下圖一般的資訊,上面記載著Submission ID。本例中ID為1663407


微軟DUA申請流程

步驟:
  1. 連結網址:https://sysdev.microsoft.com/en-US/Hardware/member/ (需事先向微軟申請通過)
  2. 可以看到微軟開發者中心的Dashboard
  3. 點擊 "Hardware certification" 底下的 "Manage submissions"
  4. 在Submission ID搜尋欄位中填入ID欲修改之Driver ID,接著按搜尋鈕
  5. 接著可以看到此Submission ID所對應的申請內容、從Microsoft取得的簽名.CAT檔以及其當初送審的device HCK (Hardware Certification Kit)報告連結、還有一個"Resell this submission"功能(留待之後介紹)
  6. 假如對此driver的修改僅限於.INF檔裡的設定更動,例如audio driver調整預設音量,則無須重跑Hardware Certification來取得HCK報告。因此可以直接點選"DUA shell package"來下載原始driver送審用的HCK報告,因為送審新driver的時候會被要求附上HCK報告。本例中會下載一個名為1663407_DUA.hckx的檔案
  7. 之所以需要送DUA就是因為有更動driver的INF或CPF檔,因此要將新的檔案連同整包driver併入剛下載的.HCKX檔一起送審。作法是先啟用HCK Studio(不要直接對.HCKX檔連點兩下),再來從Package這裡打開剛下載的.HCKX檔案。最下面的選項記得勾選"Driver Update"

  8. 開啟.HCKX檔之後會看到此畫面
  9. 點選上面Package,對"Drivers Folder"下的檔案點滑鼠右鍵,接著選"Replace Driver"(看不到此選項代表之前可能是以連點滑鼠兩下的方是開啟.HCKX檔),接著選取完整的driver資料夾。最後一步記得選擇"Do not sign"

  10. 上步驟完成後會所產生的.HCKX檔是沒有簽過名的,等會送DUA時,上傳此檔案會跳出錯誤訊息
  11. 所以還要使用SignTool賦予.HCKX檔自己公司的簽名(各家公司都會向微軟申請一組自己公司專用的簽名),方法可參考http://msdn.microsoft.com/en-us/library/windows/hardware/ff551778(v=vs.85).aspx
  12. 準備好要更改的.INF檔以及原始driver的.SYS檔後,點選"Upload driver update (DUA)"開始申請新的微軟簽名
  13. 選擇已經簽過名的.HCKX檔,然後下一步
  14. 接著會要求你填入此driver在公司裡是隸屬哪個部門管理或開發
  15. 按下Confirm鈕
  16. 最後還需再上傳一次剛剛送審的.HCKX檔
  17. 全部完成後,它會請你等待4~8小時,但實際上成功的話,只需要等半小時到一小時就可以拿到簽完名的.CAT檔。回到Submission ID的Summary頁面,點選"Signed files"就可以取得簽完名的.CAT

沒有留言:

張貼留言