2010-01-03 143 views
0

我在 标准代码部署调试周期中使用“devcon”更新UMDF驱动程序时遇到问题。问题是“devcon update”不是 真正更新的东西,除非版本号或DLL文件的日期和INF文件已从存储在系统的驱动程序 缓存文件夹中的内容更改。后狂揽一系列实验,我发现, 一个办法强迫的事情使用最新的文件是通过执行以下 :在“生成文件传递给 “stampinf.exe”在开发过程中更新UMDF驱动程序

  1. 更改参数.inc“由 明确设置为 ”-v“选项的版本。
  2. 包括 “ntverp.h” 之前修改 资源脚本文件( “DRIVER_NAME.rc”)首先定义 VER_USE_OTHER_MAJOR_MINOR_VER 然后 明确定义 VER_PRODUCTMAJORVERSIONVER_PRODUCTMINORVERSION。你会 请注意,这个系统不允许我们 修改版本和 版本号。在Win7上,这个 似乎被固定在“ntverp.h”中的7600和16385 。这是设计吗?

所以,我先修改“makefile.inc”,并设置了“-v”选项类似 “1.1.7600.16385”手动递增次版本为每一个 生成并修改RC文件,更新VER_PRODUCTMINORVERSION与 相同的数字。

或者,如果我运行SYSTEM帐户下一个命令提示符,然后去 删除 驱动器缓存文件夹“C:\ WINDOWS \ SYSTEM32 \ DriverStore \ FileRepository文件\ Driver文件夹” 之前运行“DEVCON”那么也起作用。

现在,我想我错过了一些相当基本的东西,因为这似乎是 是一个相当痛苦的做法。请帮忙!谢谢!

回答

1

为什么你不能拔掉设备并替换卸载的DLL?您不需要重新安装驱动程序,只需更换模块即可。请注意,您不应该在制作过程中或与客户有关的任何事情做到这一点,但如果您正在编写驱动程序,只需使用相同版本号的新模块即可。

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

是的,至少要等到下一个服务包

+0

好了,麻烦的是系统缓存系统上的驱动程序文件(在“C:\ WINDOWS \ SYSTEM32 \ DriverStore \ FileRepository \“在Win7上),并且不会打扰使用源媒体中的文件,除非DLL的版本已更改。删除设备(使用“devcon remove”)并将其添加回来没有效果,因为它仍然保留缓存的文件。看起来像这里的“删除”只是意味着从系统设备树中删除设备节点。所以在这一点上,在我看来,我真的坚持我上面给出的选项之一。叹!如果我弄清楚什么,我会在这里发布。 谢谢! – Raj 2010-01-04 16:01:26

+0

不要打扰驱动程序商店中的那个,这只是一个缓存副本 - 只是替换当前正在使用的那个。在设备管理器中禁用该设备,替换该DLL,然后再次启用它。 – 2010-01-04 20:44:16

+0

嗯。为什么我没有想到这个?可能是因为MSDN说这样做的“正确”方式是使用“devcon update”命令,并且不断挑选缓存副本。你所建议的是waaay更容易。我会回家给这个镜头。谢谢!你是男人! – Raj 2010-01-05 00:21:02

0

正如保罗·贝茨已在上文建议,要走的路似乎是简单地直接在驱动程序文件夹(如c:\windows\system32\drivers\umdf\)更换UMDF DLL后禁用设备管理器中的设备或使用“devcon”。我在微软的设备驱动程序新闻组上发布了这个问题,但没有得到满意的答复 - 但有些人结束了的回应我在这里发布!所以,我会提出了一个链接到该职位,以及:

http://bit.ly/6PDxKT