2017-11-18 213 views
1

今天剛剛發佈。它現在一直在運行良好。如果在啓動時連接了加密狗,我的USB功能驅動程序不會加載

當正常工作時,驅動器將匹配USB設備的 產品和供應商的ID,然後將加載和操作。

這是一個USB視頻適配器,所以在正常情況下,人們看到桌面上的模糊圖像 直到登錄,那麼你 工作正常獲得第二個屏幕,顯示首選項。

但是就在今天,如果加密狗連接在啓動時,驅動程序不加載並且USB連接的顯示器不顯示圖像。

如果我拔掉加密狗然後再插上,它的工作原理。

如果在引導過程中未安裝加密狗,然後插入 後達到的桌面,它的工作原理。

如果引導過程中加密狗連接,和我後來用kextutil到 加載它,kextutil報告成功,但它不會加載。

我猜測它是相匹配的問題,但不明白 可能出了問題。

這是一個簽名的驅動程序這是現已在/Library/Extensions;以前它是未簽名的,在/System/Library/Extensions中禁用了系統完整性保護。

產品中還有另外兩個不是USB功能驅動程序的驅動程序。他們加載得很好。所有三個驅動程序一起工作來創建虛擬幀緩衝區,然後顯示它。

回答

1

這可能是由一堆不同的東西造成的。幾點建議:

  1. 您是否驗證了::probe()::start()不被稱爲你的驅動程序類?如果他們返回NULL/false,那將導致所描述的行爲。
  2. 當您的驅動程序未能加載冷插設備時,IORegistry中的情況如何?你匹配的結點是否有客戶端對象?
  3. 你排除了kext緩存問題嗎? (例如,是否有任何錯誤時,OS重新生成的kext緩存和預鏈接內核?)

發佈您的Info.plist也可能幫助 - 這是可能的,問題出在那裏。

+0

謝謝。我正在其他地方工作,我的加密狗在工作。我明天會看看你的建議。 –