1

我已經在堆棧溢出這個問題上已經問過類似的問題了,但是我相信問題的這個部分可以分解成一個新的問題。在WM6.1驅動上的代碼簽名

我之前沒有做過移動開發,所以簽名和證書的使用對我來說是一個新概念,對於我所做的所有主題閱讀,它並沒有真正提高我的知識,因爲我讀的每個網站都只談關於簽名的一小部分,而不是完整的過程,並且將它們拼湊在一起是困難的。

我的問題是我的驅動程序沒有在啓動時加載WM6.1。它的GPS驅動程序需要加載,因此可以通過COM端口訪問任何GPS軟件。我相信這是由於簽名問題,因爲DllMain方法從未被調用過。

我已獲得使用的特權證書(.pfx),並且記錄也已獲得新的(2010年1月)SDKSamplePrivDeveloper證書。我假設駕駛員需要特權證書。

那麼我究竟做了什麼。在過去的4-5天裏,我嘗試了至少幾種變化,但都沒有成功。

在visual studio; 1)DLL項目將authenticode簽名設置爲我們的.pfx證書。建立該項目。

2)CABWizard項目將authenticode設置爲相同的證書。建立該項目。

3)遵循MSDN指令...將.pfx轉換爲509 Base64證書,並從中創建XML配置文件。它已創建到其自己的CAB或CPF文件中。並且嘗試將_setup.xml文件配置到之前創建的CAB文件中,以便將其與應用程序一起安裝。

4)我已經將這些安裝在設備上,雖然驅動程序在我們的測試應用程序中工作,但即使其「BuiltIn」中的註冊表設置正確,它也不會在啓動時加載。在檢查註冊表中的證書存儲時,我可以看到添加到SPC,根,特權和非特權存儲的證書。當使用系統|證書時,我可以在根選項卡中看到證書。所以他們肯定被添加了。

鑑於上述沒有工作。我也嘗試了使用SDKSamplePrivDeveloper證書的http://www.modaco.com/content/i8000-verizon-sch-i920-omnia-ii-http-i8000-modaco-com/306870/sdkcerts-2010-and-signing-tool/ siggner.exe工具。

1)Dll項目的authenticode簽名設置爲否。生成項目。

2)加載siggner.exe並用SDKSamplePrivDeveloper.cer簽名Dll文件。

3)CABWizard項目的authenticode設置爲No.構建項目。

4)加載siggner.exe並用SDKSamplePrivDeveloper.cer簽署cab文件。

5)使用NewSDKCerts.Cab將SDKSamplePrivDeveloper證書安裝到商店中。

6)安裝我用驅動程序創建的CAB文件。

7)再次,在溫熱的重新啓動時,驅動程序不會在啓動時加載到device.exe中。

鑑於上述情況,任何人都可以給我一些明確的指示,以確保在啓動時加載驅動程序。我明顯是做了一些錯誤的簽名,因爲這在Windows CE5中沒有問題的情況下啓動。我知道設備驅動程序代碼是OK的,因爲我可以用WM6.1中的ActiviateDevice()方法在代碼中手動激活它。

Edit--

這也許值得補充,我還創建了一個DLL和CAB沒有簽約的。並且在操作系統的乾淨啓動下安裝而不抱怨。雖然在啓動時仍然沒有加載,但我確實希望警告CAB和DLL未經簽名。

回答

0

驅動程序失敗的原因不是證書問題。

該驅動程序原本是自包含的,也包含一些GUI代碼,並已擴展。用於使應用程序全屏的庫在啓動時不可用,因此在依賴性問題中靜默失敗。

此問題目前已解決,啓動應用程序稍後加載,以便在庫可用時喚醒驅動程序。要添加的適當解決方案是延遲加載所需的庫以防止依賴性失敗。

0

驅動程序簽名也是與此驅動程序相關的問題。我們現在有製造商的證書來簽署驅動程序,以便問題得到解決。