2013-01-16 72 views
0

我一直在爲WPD(便攜式設備)類(基於http://www.osronline.com/article.cfm?article=446中的示例)編寫KMDF過濾器驅動程序。驅動程序的目的是向設備寫入塊請求。
我在WPF類的UpperFilters的註冊表中設置了它,並且在插入Samsung Galaxy S3時,我能夠捕獲發送到設備的WPD IOCTL(目前,驅動程序只會將請求轉發給下一個驅動程序) 。到現在爲止還挺好。
然後我安裝了Samsung Kies,看看過濾驅動程序是否仍然有效,但是當我插入設備時,Windows試圖安裝「Samsung Mobile MTP Device」並失敗。我試了幾次(我證實驅動程序仍然安裝,這不是一個缺少的驅動程序問題)。當我從UpperFilters中移除我的驅動程序時,該設備已安裝並正在運行。當我把過濾器放回去時,設備無法啓動(代碼10)。使用Windbg我可以看到我的驅動程序啓動,設備被添加,然後驅動程序卸載(我不知道中間會發生什麼......)
當我試圖把它作爲一個較低的過濾器,它再次工作精細。
在搜索網絡時,我發現它也發生在使用WDM而不是WDK時。WPD上部過濾器導致MTP設備安裝失敗

爲什麼在這種情況下放置UpperFilter導致設備無法啓動?
有沒有辦法解決它?

回答

0

您是否嘗試過其他設備以查看這是否屬於三星?此外,這看起來像三星凱斯軟件引入的東西,也許他們正在安裝另一個過濾器驅動程序。您可以通過檢查%windir%\ inf \ setupapi.dev.log來查看是否有與凱斯或三星相關的驅動程序條目。

+0

嗨,麗莎,謝謝你的回答。 Samsung Kies確實安裝了兩個驅動程序:ssudmdm.sys,它是一個調制解調器驅動程序,ssudbus.sys似乎更有趣。我比較了Kies安裝前後的設備驅動程序堆棧。在Kies之前(從上到下):MyFilter - > WUDFrd - > WinUsb - > usbhub。 Kies(沒有我的過濾器)後:WUDFrd - > WinUsb - > dg_ssudbus。看起來他們的驅動程序取代了底層驅動程序,但我不明白爲什麼放置我的上層過濾驅動程序會產生任何影響,並且設備無法啓動,因爲我的代碼並未真正阻止任何內容。 – oren671

1

Oren, 你在測試你的代碼的機器是什麼? 你能概括地描述你的代碼實際上做了什麼嗎?

我使用相同的樣本作爲我的項目的基線,它在我運行良好,作爲一個運行Win7/32的VMWare上的GS3頂層過濾驅動程序 - 安裝了Kies。

最重要的是 - 您將哪一類作爲上級過濾器添加到?

我通過HKLM \ XxXControlSet \ Control \ Class {EEC5AD98-8080-425F-922A-DABF3DE3F69A}添加了它,它在GS3上運行平穩。

您是否使用示例中的安裝程序來安裝驅動程序/服務?

祝你好運 Uriel