使用设备基本组件测试来再现设备管理器问题代码

设备基础功能 (DevFund) 测试使用 Microsoft 提供的 I/O 插件通过以下方式来演练设备:在禁用和启用设备的同时向设备发送特定于设备类的 I/O,循环切换系统的电源状态和重启,解除分配和重新分配资源,以及执行其他任务。

步骤 1:确定哪些测试可能会重现设备错误代码

下表将设备问题代码与已知以引发相应问题代码的方式演练设备的测试相匹配。 设备和驱动程序测试人员可以使用此图表尝试重现在现实中看到的设备问题,或者在常规测试期间可能难以重现的问题。

设备错误代码 设备错误消息 设备基础功能测试
10 CM_PROB_FAILED_START DF - PNP 重新平衡故障重启设备测试(可靠性)
DF - PNP 意外删除设备测试(开发和集成)
DF - PNP 意外删除设备测试(可靠性)
DF - PNP DIF 删除设备测试(可靠性)
DF - 使用前后 IO 重新引导/重启(可靠性)
DF - PNP 取消/删除设备测试(可靠性)
DF - PNP 禁用和启用设备测试(可靠性)
DF - PNP 重新平衡请求新资源设备测试(开发和集成)
DF - PNP 重新平衡请求新资源设备测试(可靠性)
DF - PNP 删除设备测试(可靠性)
DF - PNP 停止(重新平衡)设备测试(开发和集成)
DF - PNP 停止(重新平衡)设备测试(可靠性)
DF - 使用期间 IO 休眠(可靠性)
DF - PCI 根端口意外删除测试(仅限 PCI 设备)(可靠性)
14 CM_PROB_NEED_RESTART DF - PNP 删除设备测试(可靠性)
DF - PNP DIF 删除设备测试(可靠性)
28 CM_PROB_FAILED_INSTALL DF - PNP DIF 删除设备测试(可靠性)
31 CM_PROB_FAILED_ADD DF - PNP DIF 删除设备测试(可靠性)
DF - PNP 禁用和启用设备测试(可靠性)
DF - PNP 重新平衡故障重启设备测试(可靠性)
DF - PNP 删除设备测试(可靠性)
38 CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD DF - PNP DIF 删除设备测试(可靠性)
39 CM_PROB_DRIVER_FAILED_LOAD DF - PNP DIF 删除设备测试(可靠性)
43 CM_PROB_FAILED_POST_START DF - PNP 取消/停止设备测试(可靠性)
DF - PNP 取消/删除设备测试(可靠性)
DF - PNP 重新平衡故障重启设备测试(可靠性)
DF - PNP 重新平衡请求新资源设备测试(可靠性)
DF - PNP 删除设备测试(可靠性)
DF - 使用期间 IO 休眠(可靠性)
52 CM_PROB_UNSIGNED_DRIVER DF - PNP 禁用和启用设备测试(可靠性)

有关设备错误代码的列表,请参阅设备管理器错误消息

有关设备基础功能测试的完整列表,请参阅 Device.DevFund 测试

步骤 2:确定如何配置测试和测试计算机

在确定要运行哪个测试后,决定如何配置测试和测试计算机以重现错误。 若要查看每个测试支持的参数,请单击上表中特定测试的链接。 该链接将描述测试和可用于该测试的选项。 例如,某些设备 PnP 错误是偶发的。 /testcycles 开关可用于所有测试,以指定测试应运行的次数:

/p:testcycles=10

如果以更多的迭代次数运行测试,可能会增加引发设备错误的可能性。

某些测试会导致生成 SetupAPI 日志,例如 DF - 使用前后 IO 重新安装(可靠性)。  可以将测试计算机配置为生成详细的 SetupAPI 日志

步骤 3:运行测试

可以在命令行上轻松运行这些测试,也可以在设置 HLK 控制器后在 HLK 上运行。

相比通过 HLK 运行测试,通过 te.exe 在命令行上运行测试会提供更多测试选项。 例如,当测试中发生错误时,/breakonerror 命令行参数会导致 TAEF 跳转到调试器。 在命令行上运行测试时,还可以向 te.exe 提供更多命令行选项

步骤 4:调试问题

调查设备和驱动程序问题时可获得很多帮助。 有关查看测试日志和使用内核调试器调查设备和驱动程序问题的信息,请参阅故障排除文档