我一直在为WPD(便携设备)类编写KMDF过滤器驱动程序(基于http://www.osronline.com/article.cfm?article=446中的示例)。驱动程序的目的是阻止对设备的写入请求
我在UpFilters for WPD类的注册表中设置它,当插入三星Galaxy S3时,我能够捕获发送到设备的WPD IOCTL(目前驱动程序除了将请求转发给下一个驱动程序之外什么都不做)。到目前为止一切顺利。
然后我安装了Samsung Kies以查看过滤器驱动程序是否仍然有效,但是当我插入设备时,Windows尝试安装“Samsung Mobile MTP Device”并失败。我试了几次(我验证了驱动程序仍然安装,这不是一个缺少的驱动程序问题)。当我从UpperFilters中删除我的驱动程序时,设备已安装并正常工作。当我放回过滤器时,设备无法启动(代码10)。使用Windbg我可以看到我的驱动程序启动,设备已添加,然后驱动程序卸载(我不知道中间发生了什么......)
当我试图把它作为一个较低的过滤器,它再次工作正常
在搜索网络时,我发现在使用WDM而不是WDK时也会发生这种情况。
为什么在这种情况下使UpperFilter导致设备无法启动?
有办法解决吗?
答案 0 :(得分:1)
奥伦 您在哪台机器上测试代码? 你能概括地描述你的代码实际上做了什么吗?
我使用相同的示例作为我的项目的基线,并且它在我运行Win7 / 32的VMWare上作为GS3之上的上层过滤器驱动程序(安装了Kies)正常工作。
最重要的是 - 您将哪个类添加到上层过滤器?
我在HKLM \ XxXControlSet \ Control \ Class {EEC5AD98-8080-425F-922A-DABF3DE3F69A}上添加了它,它在GS3上顺利运行。
您是否使用示例中的安装程序应用程序来安装驱动程序/服务?
祝你好运 乌列尔答案 1 :(得分:0)
您是否尝试过其他设备,看看这是否特定于三星?
此外,这看起来像Samsung Kies软件引入的东西,也许他们正在安装另一个过滤器驱动程序。您可以通过检查%windir%\ inf \ setupapi.dev.log查看是否存在与Kies或Samsung相关的驱动程序条目。