11

有谁知道部分或完全自动化驱动程序测试安装的方法?

我是驱动程序开发的新手,并且习惯于在高级语言中使用更多的测试驱动方法,因此转移到我无法轻松测试的那种环境对我来说是一个进步。我正在为我的测试环境使用 Virtual PC,目前必须重置它,打开设备管理器,选择设备,点击一堆“你真的确定你不想安装这些系统驱动程序之一”类型对话框,然后最后在主机中重新启动 WinDbg 时重置测试环境,就像测试环境正在启动一样......啊。

在重复这个过程很多很多次之后,肯定有更好的方法来做到这一点吗?商业驱动程序开发人员使用哪些工具/方法/技巧在测试环境中运行他们的驱动程序?

请注意,这与单元测试驱动程序无关,我还没有到那个阶段,也不知道它是否可能。这只是要启动一个附加了 WinDbg 的测试环境,以确保我可能所做的一些小改动符合我的预期。

4

5 回答 5

8

在我看来,虚拟化软件+“模拟对象”(分层)方法(如 Aaron Digulla 所建议)+脚本(如 Sergius 所建议)可以简化设备驱动程序的开发。

但是,如果您使用 Visual Studio 开发用户级应用程序,您也可以使用VisualDDK将其用于内核设备驱动程序开发(+ VirtualKD通过命名管道进行调试,这比通过虚拟 COM 端口更快),它专门解决了你提到的烦恼;从它的主页:

...这个项目为驱动程序开发世界带来了 Windows 应用程序开发的简单性和便利性。由于超慢的虚拟 COM 端口,不再需要手动创建构建脚本、复制驱动程序文件、从 INF 安装驱动程序、在 WinDbg 和源代码编辑器之间切换或在每一步后等待几秒钟。只需使用方便的驱动程序向导创建一个驱动程序项目,选择一个虚拟机,然后直接从 Visual Studio 调试您的驱动程序即可。想要测试更改?只需正常按下 Shift-F5,修改您的驱动程序,重建它并再次启动. VisualDDK 将卸载旧驱动程序,安装新驱动程序并自动快速加载。厌倦了 WinDbg 加载符号文件几分钟和查找符号几秒钟?只需让 VisualDDK 使用它自己的基于 DIA 的符号引擎为您优化。在您的驱动程序中使用 C++/STLPort?VisualDDK 将本机可视化所有 STL 容器和字符串,就像 Visual Studio 对用户模式应用程序所做的一样。...

于 2009-10-30T02:09:48.977 回答
6

您可以编写一些 shell 脚本(使用 sc.exe 和 devcon.exe)来自动执行部署任务(无需打开设备管理器、单击按钮等)。并使系统快照准备好调试(无需等待系统启动)。

不要忘记使用 DriverVerifier 检查您的驱动程序!

我自己的脚本示例:)

sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys
sc start FsFilter
pause
sc stop FsFilter
sc delete FsFilter
于 2009-10-16T09:54:51.260 回答
4

遵循我在这里给出的建议。基本上,尽可能少地使用真实系统进行测试。

在您的情况下,我还有另一个提示:Virtual PC 正在使用虚拟硬盘(这可能是您真实硬盘上的文件)。

您无需安装驱动程序,只需替换虚拟硬盘中的新文件即可。这在正在运行的系统中通常是不可能的,但在虚拟系统中,您可以打开虚拟磁盘文件并进行更改(因为 Windows 不会锁定其中的文件)。

我不确定Virtual PC,但其他模拟器附带了处理虚拟磁盘映像的工具。如果 VPC 做不到,请查看VirtualBox

于 2009-10-16T09:36:07.300 回答
3

这完全取决于您正在编写什么样的驱动程序。但在许多情况下,编写一个适当的 makefile(或类似的东西)来处理驱动程序安装、启动/停止和启动测试工具已经足够了。

我还将所有测试机器配置为自动登录 (AutoAdminLogon)、映射网络驱动器并在启动后启动适当的命令提示符。运行特定的测试只需输入一个命令即可。

关于 VirtualPC 的一句话:VirtualPC 对于内核模式开发非常方便,但不要忘记它只模拟单处理器机器——所以一定要定期在多处理器机器上测试代码。也就是说,VHD 技巧可能看起来很方便,但它在某种程度上将您与 Virtual PC 联系在一起——编写在 VirtualPC 上和在真机上同样工作的适当脚本,因此对我来说似乎是一种更好的方法。

最后,认为它是一个无耻的插件,但如果你正在寻找 Windows 内核模式代码的单元测试框架,我已经写了一个:cfix

于 2009-10-27T19:24:58.937 回答
2

我认为 DevCon 实用程序(在这篇 OSR Online 文章中描述)会对您有所帮助。您应该能够设置一键完成工作的批处理文件。

注册 osronline.com 是免费的,您可能必须注册才能阅读该文章。如果你正在编写驱动程序,你想注册。这些人已经这样做了很长时间,并且该网站上有很多非常好的信息。

于 2009-10-29T22:04:34.887 回答