在标准的代码驱动器周期中,我使用“ DevCon”在更新UMDF驱动程序时遇到了一些困难。问题在于,除非版本号或dll文件的日期和INF文件已从系统的驱动程序Cache文件夹中存储的内容更改,否则“ DevCon Update”并没有真正更新任何内容。经过一系列疯狂的实验,我发现迫使事物使用最新文件的一种方法是进行以下操作:

  1. 通过用“ -v”选项明确设置版本,将传递的参数更改为“ skakinf.exe”。
  2. 修改资源脚本文件(“ driver_name.rc”)首先定义 VER_USE_OTHER_MAJOR_MINOR_VER在包含“之前ntverp.h“然后明确定义 VER_PRODUCTMAJORVERSIONVER_PRODUCTMINORVERSION. 。您会注意到,此系统不允许我们更改构建和修订号。在Win7上,这似乎定为7600和16385。ntverp.h”。这是设计使然吗?

因此,我首先修改“ makefile.inc”,然后将“ -v”选项设置为“ 1.1.7600.16385”,以每个构建中的次要版本手动增加次要版本,然后修改RC文件并进行更新 VER_PRODUCTMINORVERSION 具有相同的数字。

另外,如果我在系统帐户下运行命令提示符,然后删除“ C: Windows System32 DriverStore filerepository driver文件夹”中的驱动程序缓存文件夹,然后在运行“ DevCon”之前也可以。

现在,我认为我在这里缺少一些相当基本的东西,因为这似乎是一种相当痛苦的方式。请帮忙!谢谢!

有帮助吗?

解决方案

为什么不能直接拔掉设备并替换卸载的 DLL?您不需要重新安装驱动程序,只需更换模块即可。请注意,您不应该在生产期间或与客户有关的任何事情中执行此操作,但如果您正在编写驱动程序,只需猛击具有相同版本号的新模块即可。

在 Win7 上,这似乎在“ntverp.h”中固定为 7600 和 16385。这是设计使然吗?

是的,至少在下一个服务包之前

其他提示

正如 Paul Betts 上面所建议的,解决方法似乎是直接替换驱动程序文件夹中的 UMDF DLL(例如 c:\windows\system32\drivers\umdf\)在设备管理器中或使用“devcon”禁用设备后。在发帖之前,我在微软的设备驱动程序新闻组上问过这个问题,但没有得到满意的答复 - 但有些人最终在那里做出了回应 我在这里发帖了!所以我也会发布该帖子的链接:

http://bit.ly/6PDxKT

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top