0

我一直在为 WPD(便携式设备)类编写 KMDF 过滤器驱动程序(基于http://www.osronline.com/article.cfm?article=446中的示例)。驱动程序的目的是对设备的块写入请求。
我在注册表中为 WPD 类设置了 UpperFilters,当插入三星 Galaxy S3 时,我能够捕获发送到设备的 WPD IOCTL(当前驱动程序只将请求转发给下一个驱动程序)。到目前为止,一切都很好。
然后我安装了 Samsung Kies 以查看过滤器驱动程序是否仍然有效,但是当我插入设备时,Windows 尝试安装“Samsung Mobile MTP Device”并失败。我试了几次(我确认驱动程序仍然安装,这不是缺少驱动程序的问题)。当我从 UpperFilters 中删除我的驱动程序时,该设备已安装并可以正常工作。当我放回过滤器时,设备无法启动(代码 10)。使用Windbg,我可以看到我的驱动程序启动,设备被添加,然后驱动程序卸载(我不知道中间发生了什么......)
当我试图将它作为一个较低的过滤器时,它又可以正常工作了。
在网上搜索时,我发现使用 WDM 而不是 WDK 时也会发生这种情况。

为什么在这种情况下放置 UpperFilter 会导致设备无法启动?
有没有办法解决它?

4

2 回答 2

1

Oren,你在什么机器上测试你的代码?你能概括地描述你的代码实际上做了什么吗?

我正在使用相同的示例作为我的项目的基线,它作为 GS3 顶部的上层过滤器驱动程序运行良好 - 安装了 Kies - 在运行 Win7/32 的 VMWare 上。

最重要的是 - 您将驱动程序作为上层过滤器添加到哪个类?

我在 HKLM\XxXControlSet\Control\Class{EEC5AD98-8080-425F-922A-DABF3DE3F69A} 上添加了我的,它在 GS3 上运行平稳。

您是否使用示例中的安装程序应用程序来安装驱动程序/服务?

祝你好运乌列尔

于 2013-01-30T04:55:06.163 回答
0

您是否尝试过其他设备以查看这是否是三星特有的?

此外,这看起来像是三星 Kies 软件引入的东西,也许他们正在安装另一个过滤器驱动程序。您可以通过检查 %windir%\inf\setupapi.dev.log 来查看是否有与 Kies 或 Samsung 相关的驱动程序条目。

于 2013-01-17T00:39:18.267 回答