题
在标准的代码驱动器周期中,我使用“ DevCon”在更新UMDF驱动程序时遇到了一些困难。问题在于,除非版本号或dll文件的日期和INF文件已从系统的驱动程序Cache文件夹中存储的内容更改,否则“ DevCon Update”并没有真正更新任何内容。经过一系列疯狂的实验,我发现迫使事物使用最新文件的一种方法是进行以下操作:
- 通过用“ -v”选项明确设置版本,将传递的参数更改为“ skakinf.exe”。
- 修改资源脚本文件(“ driver_name.rc”)首先定义
VER_USE_OTHER_MAJOR_MINOR_VER
在包含“之前ntverp.h
“然后明确定义VER_PRODUCTMAJORVERSION
和VER_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”禁用设备后。在发帖之前,我在微软的设备驱动程序新闻组上问过这个问题,但没有得到满意的答复 - 但有些人最终在那里做出了回应 后 我在这里发帖了!所以我也会发布该帖子的链接: