如何使用“驱动程序测试”模板编写驱动程序测试

注意

本主题介绍仅在 Visual Studio 2013 中提供的功能。 有关以前的 WDK 和 Visual Studio 版本的信息,请参阅其他 WDK 下载

你可以使用适用于 Windows 8 的 Windows 驱动程序工具包 (WDK) 来创建自己的驱动程序测试或自定义所提供的部分测试。 你可以使用 WDK 为 Microsoft Visual Studio Ultimate 2012 提供的驱动程序测试框架将你创建的测试部署到远程测试计算机。

通过 WDK 提供的模板可创建采用 C++、C# 和脚本 (JScript) 编写的、适用于 Windows 驱动程序测试项目的起始代码。 你可以选择想要包含的测试用例,也可以从空白项目开始。 你可以自定义代码,为驱动程序添加新的测试用例。 你可以使用驱动程序测试框架从 Visual Studio 部署测试。

使用 C++ 驱动程序测试模板自定义驱动程序测试

  1. 从“文件”菜单中选择“新建”>“项目” 。
  2. 从“新建项目” 对话框中的已安装模板列表中,选择“Visual C++”>“Windows 驱动程序”>“测试” 。
  3. 选择“C++ Windows 驱动程序测试” 。
  4. 为驱动程序测试项目提供名称和位置(或使用默认值)。
  5. 从“Windows 驱动程序测试” 对话框中,选择你想要包含的测试用例或选择空(空白)驱动程序测试。 有关测试用例的详细信息,请参阅 Windows 驱动程序测试用例
  6. 添加所需的测试元数据。 有关详细信息,请参阅如何添加测试元数据
  7. 生成驱动程序测试。

使用 C# 驱动程序测试模板自定义驱动程序测试

  1. 从“文件”菜单中选择“新建”>“项目” 。
  2. 从“新建项目”对话框中的已安装模板列表中,选择“Visual C#”>“Windows 驱动程序”。
  3. 选择“C# Windows 驱动程序测试”。
  4. 为驱动程序测试项目提供名称和位置(或使用默认值)。
  5. 从“Windows 驱动程序测试” 对话框中,选择你想要包含的测试用例或选择空(空白)驱动程序测试。 有关测试用例的信息,请参阅 Windows 驱动程序测试用例
  6. 添加所需的测试元数据。 有关详细信息,请参阅如何添加测试元数据
  7. 生成驱动程序测试。

使用脚本驱动程序测试模板自定义驱动程序测试

  1. 从“文件”菜单中选择“新建”>“项目” 。
  2. 从“新建项目” 对话框中的已安装模板列表中,选择“脚本”>“Windows 驱动程序” 。
  3. 选择“Windows 驱动程序测试脚本” 。
  4. 为驱动程序测试项目提供名称和位置(或使用默认值)。
  5. 从“Windows 驱动程序测试” 对话框中,选择你想要包含的测试用例或选择空(空白)驱动程序测试。 有关测试用例的信息,请参阅 Windows 驱动程序测试用例
  6. 添加所需的测试元数据。 有关详细信息,请参阅如何添加测试元数据
  7. 生成驱动程序测试。

使你创建的驱动程序测试可部署到测试计算机上

生成驱动程序测试时,新测试将可部署到测试计算机上。 默认情况下,你创建的测试将显示在测试类别“我的测试类别” 中。 测试名称基于你选择的测试用例,其名称将类似于“我的即插即用意外删除测试” 。 每次生成测试时,测试将被覆盖。 最后生成的测试可供在测试计算机上部署和运行。

Windows 驱动程序测试用例

WDK 提供有采用 C++、C# 和脚本编写的、适用于 Windows 驱动程序测试项目的起始代码。 你可以选择想要包含的测试用例,也可以从空白项目开始。 并非所有测试用例都在所有语言中可用。

即插即用测试用例 这些测试用例将强制驱动程序处理大部分与即插即用 (PnP) 相关的 IRP
禁用/启用 提供用于禁用和启用 PnP 设备的测试用例代码。
删除 提供用于删除 PnP 设备的测试用例代码。
意外删除 提供用于执行 PnP 设备意外删除的测试用例代码。
电源管理测试用例 提供用于强制驱动程序处理系统睡眠状态的测试用例。
系统睡眠状态 提供用于在系统从睡眠状态至电源状态循环时执行设备 I/O 的测试用例代码。
压力和功能测试用例 提供用于对 IOCTL 和 WMI 接口执行 I/O 压力和功能测试的测试用例。
I/O 压力 提供用于执行设备 I/O 压力的测试用例。
功能 IOCTL 接口 提供为 IOCTL 接口创建功能测试用例的模板。 (仅可用于 C++)。
功能 WMI 接口 提供为 Windows 管理接口 (WMI) 创建功能测试用例的模板。 (仅可用于脚本)
空测试用例
提供用于创建 Windows 驱动程序测试项目的空白模板。