2014-02-19 49 views
2

我公司生產的測量設備通過USB連接到PC並用於使用Windows內置USB HID驅動程序。我正在使用不同的驅動程序來控制設備,而且我正在爲許多Windows版本簽署這些驅動程序。原因是我們希望我們的客戶能夠安裝我們的測量軟件(可以預先安裝這些新驅動程序),插入我們的測量設備,並讓Windows信任並使用我們的新驅動程序,以支持內置USB HID驅動程序。無論使用什麼USB端口,或者用戶連接描述符中具有不同序列號的設備,每次連接設備時,它還具有使用此新驅動程序的額外好處。使用Vista和以後的方法簽署的Windows驅動程序在XP中安裝得很好,但它不應該?

我已經通讀並執行了Microsoft編寫的KMCS_Walkthrough中概述的步驟,通過爲inf文件創建Windows 7 x64的目錄文件並使用自簽名對目錄文件簽名來執行此驅動程序的測試簽名證書。重啓進入測試模式時,Windows 7 x64機器上的東西似乎可以順利運行。讓我感到意外的是,我能夠創建一個XP_x86目錄文件,使用我的測試證書對其進行簽名,將我的測試證書導入到受信任的根存儲中,並在Windows XP機器上獲得我想要的驅動程序行爲。默認的驅動程序簽名策略被設置爲默認值(警告 - 每次提示我選擇操作)。

我很驚訝,因爲我一直在閱讀的有關簽署XP驅動程序公開發布的所有MSDN文檔似乎都對驅動程序進行了嚴格的WHQL認證,以便讓驅動程序完全可信,而不是從第三方獲取代碼簽名證書並使用它來簽署驅動程序。這是不是真的?我的自簽名驅動程序如何在Windows XP中排在機箱內的USB HID驅動程序?

回答

0

經過很多試驗,錯誤和研究後,我終於得出結論。

我最初的問題的關鍵是我使用的是自簽名證書。我生成的自簽名證書在Windows中使用makcert,按照該KMCS_Walkthrough的例子:

makecert -r -pe -ss PrivateStore -n CN=CompanyName MyCertificate.cer 

其中指明瞭增強型密鑰用法(EKUs)證書應該是有效的(-eku)不包含參數。我不知道的是,在缺少此參數的情況下,這會與所有EKU創建一個自簽名證書。最值得注意的是EKU稱爲「Windows系統組件驗證(1.3.6.1.4.1.311.10.3.6)」。該EKU包含在用於WHQL簽名的證書中。

所以,事實上,Windows XP的行爲是恰當的。我的驅動程序確實是用WHQL簽名的,它只是一個使用過的自簽名WHQL證書。

1

我認爲你的經驗是正常的。

在我的公司,我們已經爲Windows XP用戶分發了USB驅動程序,我們從來沒有簽署它們來安裝它們。我們稍後會自己開始簽名,但這並沒有真正影響Windows XP用戶體驗。

我們的驅動程序通常只使用INF或者它們使用WinUSB,所以如果您正在編譯二進制驅動程序,則可能與您不同。

如果沒有WHQL簽名,在他們通過點擊此警告Windows XP用戶仍然可以安裝驅動程序包,只要:在安裝驅動程序包

enter image description here

後,我的經驗是什麼,阻止它包含的內核模塊被加載到內核中。但是,只要第一次將新設備插入計算機,我們的用戶就必須通過「發現新硬件嚮導」。

也許您的驅動程序超出了HID驅動程序,因爲您選擇了更具體的標識符字符串(即其中包含供應商ID和產品ID的字符串)。

欲瞭解更多信息,我建議閱讀我的文章:Practical Windows Code and Driver Signing

+0

嗨大衛。有趣的是,您之前回復是因爲我剛剛在發佈這篇文章之前,已經閱讀了您的文章(以及1,000頁的MSDN文章和谷歌搜索)。 我的驅動程序也僅限INF。你是如何去安裝你的INF-only驅動程序的? 我問,因爲我以前的嘗試在排序內置USB HID驅動程序不起作用。因此,我可以安裝一個驅動程序實例,但如果我在描述符中切換了USB端口或交換單元號不同的序列號,它就不會出現問題。 我曾使用DPInst和Devcon獲得相同的結果。 – amandion

+0

我們的INF文件有一個DefaultInstall部分,允許用戶通過右鍵單擊並選擇「安裝」來安裝它們。但是現在我們有很好的安裝程序,可以將驅動程序包(INF和相關文件)複製到硬盤驅動器,並從我們編寫的Win32 DLL中調用SetupCopyOEMInf。由於我們的設備並未嘗試成爲標準課程,所以我從不需要排名駕駛員。 –

+0

需要注意的是,在用戶通過「發現新硬件嚮導」後,Windows會記住結果,並且在設備插入時不會使用任何新的驅動程序。因此,您可能需要告訴Windows爲設備更新驅動程序軟件?或者嘗試一下全新安裝的Windows XP,但沒有學會使用錯誤的驅動程序? –

相關問題