在标准代码部署调试周期中,我在使用"devcon“更新UMDF驱动程序时遇到了一些问题。问题是,"devcon更新“实际上并没有更新任何内容,除非DLL文件和INF文件的版本号或日期与存储在系统驱动程序缓存文件夹中的内容不同。经过一系列令人恼火的实验之后,我发现强制使用最新文件的一种方法是执行以下操作:
ntverp.h”之前首先定义VER_USE_OTHER_MAJOR_MINOR_VER,然后显式定义VER_PRODUCTMAJORVERSION和VER_PRODUCTMINORVERSION。您将注意到,此系统不允许我们更改构建和修订编号。在Win7上,这似乎是固定在7600和16385在"ntverp.h“。这是设计出来的吗?因此,我首先修改"makefile.inc“,并将"-v”选项设置为"1.1.7600.16385“,手动增加每个构建的次要版本,然后修改RC文件并使用相同的数字更新VER_PRODUCTMINORVERSION。
或者,如果我在系统帐户下运行命令提示符,并在运行"devcon“之前删除"C:\windows\system32\DriverStore\FileRepository\DRIVER文件夹中的驱动程序缓存文件夹,那么这也是有效的。
现在,我想我在这里遗漏了一些相当基本的东西,因为这似乎是一种相当痛苦的做法。请帮帮我!谢谢!
发布于 2010-01-03 03:33:52
为什么不直接拔掉设备的插头并替换卸载的DLL呢?您不需要重新安装驱动程序,只需更换模块即可。请注意,您不应该在生产期间或与客户有关的任何事情中这样做,但是如果您正在编写一个驱动程序,只需在新模块中使用相同的版本号即可。
On Win7 --在"ntverp.h“中,它似乎固定在7600和16385。这是故意的吗?
是的,至少在下一个服务包之前
发布于 2010-01-07 02:47:04
正如Paul前面所建议的,方法似乎是在设备管理器中或使用"devcon“禁用设备之后,直接替换驱动程序文件夹(例如c:\windows\system32\drivers\umdf\)中的UMDF。在这里发布之前,我曾在微软的设备驱动程序新闻组上问过这个问题,但没有得到令人满意的答复--但我在这里发布后,一些人最终回复了这个问题!所以我也会贴一个链接到那篇文章:
http://bit.ly/6PDxKT
https://stackoverflow.com/questions/1993838
复制相似问题