2

我在标准代码部署调试周期中使用“devcon”更新 UMDF 驱动程序时遇到了一些问题。问题是“devcon update”并没有真正更新任何东西,除非 DLL 文件和 INF 文件的版本号或日期与存储在系统驱动程序缓存文件夹中的内容不同。经过一系列令人抓狂的实验后,我发现强制使用最新文件的一种方法是执行以下操作:

  1. 通过使用“-v”选项显式设置版本来更改“makefile.inc”中传递给“stampinf.exe”的参数。
  2. 修改资源脚本文件(“DRIVER_NAME.rc”), VER_USE_OTHER_MAJOR_MINOR_VER 在包含“ ntverp.h”之前先定义,然后显式定义 VER_PRODUCTMAJORVERSIONand VER_PRODUCTMINORVERSION。您会注意到该系统不允许我们更改构建和修订号。在 Win7 上,这似乎在“ ntverp.h”中固定为 7600 和 16385。这是设计使然吗?

因此,我首先修改“makefile.inc”并将“-v”选项设置为“1.1.7600.16385”之类的东西,为每个构建手动增加次要版本,然后修改 RC 文件并VER_PRODUCTMINORVERSION使用相同的编号进行更新。

或者,如果我在 SYSTEM 帐户下运行命令提示符并在运行“devcon”之前删除“C:\windows\system32\DriverStore\FileRepository\DRIVER FOLDER”中的驱动程序缓存文件夹,那么这也可以。

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

4

2 回答 2

1

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

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

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

于 2010-01-03T03:33:52.243 回答
1

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

http://bit.ly/6PDxKT

于 2010-01-07T02:47:04.517 回答