我在 标准代码部署调试周期中使用“devcon”更新UMDF驱动程序时遇到问题。问题是“devcon update”不是 真正更新的东西,除非版本号或DLL文件的日期和INF文件已从存储在系统的驱动程序 缓存文件夹中的内容更改。后狂揽一系列实验,我发现, 一个办法强迫的事情使用最新的文件是通过执行以下 :在“生成文件传递给 “stampinf.exe”在开发过程中更新UMDF驱动程序
- 更改参数.inc“由 明确设置为 ”-v“选项的版本。
- 包括 “
ntverp.h
” 之前修改 资源脚本文件( “DRIVER_NAME.rc”)首先定义VER_USE_OTHER_MAJOR_MINOR_VER
然后 明确定义VER_PRODUCTMAJORVERSION
和VER_PRODUCTMINORVERSION
。你会 请注意,这个系统不允许我们 修改版本和 版本号。在Win7上,这个 似乎被固定在“ntverp.h
”中的7600和16385 。这是设计吗?
所以,我先修改“makefile.inc”,并设置了“-v”选项类似 “1.1.7600.16385”手动递增次版本为每一个 生成并修改RC文件,更新VER_PRODUCTMINORVERSION
与 相同的数字。
或者,如果我运行SYSTEM帐户下一个命令提示符,然后去 删除 驱动器缓存文件夹“C:\ WINDOWS \ SYSTEM32 \ DriverStore \ FileRepository文件\ Driver文件夹” 之前运行“DEVCON”那么也起作用。
现在,我想我错过了一些相当基本的东西,因为这似乎是 是一个相当痛苦的做法。请帮忙!谢谢!
好了,麻烦的是系统缓存系统上的驱动程序文件(在“C:\ WINDOWS \ SYSTEM32 \ DriverStore \ FileRepository \“在Win7上),并且不会打扰使用源媒体中的文件,除非DLL的版本已更改。删除设备(使用“devcon remove”)并将其添加回来没有效果,因为它仍然保留缓存的文件。看起来像这里的“删除”只是意味着从系统设备树中删除设备节点。所以在这一点上,在我看来,我真的坚持我上面给出的选项之一。叹!如果我弄清楚什么,我会在这里发布。 谢谢! – Raj 2010-01-04 16:01:26
不要打扰驱动程序商店中的那个,这只是一个缓存副本 - 只是替换当前正在使用的那个。在设备管理器中禁用该设备,替换该DLL,然后再次启用它。 – 2010-01-04 20:44:16
嗯。为什么我没有想到这个?可能是因为MSDN说这样做的“正确”方式是使用“devcon update”命令,并且不断挑选缓存副本。你所建议的是waaay更容易。我会回家给这个镜头。谢谢!你是男人! – Raj 2010-01-05 00:21:02