如何选择和配置设备基础功能测试

适用于 Windows 8 的 WDK 提供了一个驱动程序测试框架,其中包括一组名为 Device Fundamentals 测试的测试。 设备基础测试是一系列测试,这些测试在内部Microsoft用于测试随 Windows 和 WDK 附带的驱动程序和驱动程序示例,以及外部作为 Windows 硬件认证计划的一部分。 可以从开发环境运行测试。 运行测试时,可以使用用于 Windows 认证测试的相同参数,也可以根据测试和调试需求配置和自定义运行时参数。

充分利用设备基础功能测试

若要从设备基础测试中获得最大优势,设备必须受默认 I/O 插件支持。若要查看设备类型是否受支持并确定是否有特定测试要求,请参阅 提供的 WDTF 简单 I/O 插件。设备基础测试还包括一个实用工具,可用于测试设备,以查看它是否受支持。 如果设备不受支持,可以创建 WDTF 简单 I/O 插件。 创建一个 WDTF 简单 I/O 插件。 有关详细信息,请参阅 How to customize I/O for your device using the WDTF Simple I/O Action Plug-in(如何使用 WDTF 简单 I/O 操作插件为你的设备自定义 I/O)。

关于设备基础知识测试

WDK 以两种配置(基本和认证)提供设备基础测试。 在这两种配置中,可以编辑测试参数,以改变测试长度、要执行的测试周期数和其他测试参数,具体取决于要测试目标设备或驱动程序的方式。 基本配置适用于常规驱动程序和设备测试和调试。 在开发周期的早期和整个过程中使用基本配置。 基本配置中的测试与 Windows 认证测试中使用的设置相同,但运行时间较短除外。 在认证配置中,测试与 Windows 认证测试中使用的设置相同。 使用认证配置来验证设备或驱动程序是否已准备好进行适用于硬件的 Windows 认证计划的测试。

设备基础测试包括以下类别中的测试。

设置运行时测试参数

可以编辑许多设备基础测试的运行时参数。 在“驱动程序测试组”窗口中,测试名称旁边的箭头(»)指示测试具有可以更改的参数。 选择箭头(»)以显示运行时参数。

最有用的参数之一是 DQ,它指定要测试的目标设备。 默认值 (IsDevice) 测试目标计算机上的所有设备。 DQ 参数采用用于标识目标设备的 WDTFSDEL 查询。 可以指定用于测试的特定设备,例如:

DeviceID='USB\ROOT_HUB\4&1CD5D022&0' 仅选择使用指定的 DeviceID 进行测试的设备。

有关 DQ 和其他运行时参数的详细信息,请参阅 Device Fundamentals 测试参数

设备基础知识测试参数

参数 DESCRIPTION

DQ

识别用于测试的设备。 DQ 参数采用用于标识目标设备的 WDTFSDEL 查询。 此查询非常灵活,可用于表达任意数量的设备,从单个设备到系统中的所有设备。

常见示例:

若要测试使用特定 INF 文件安装的所有设备,请执行以下作:

INF::FileName=INF_File_Name

例如 ,INF::OriginalInfFileName='KMDFTest.inf'

Inf: OriginalInFileName 可用于任何 INF 文件。

若要测试具有特定设备 ID 的设备,请执行以下作:

DeviceId='DeviceId'

例如 ,DeviceID='USB\ROOT_HUB\4&1CD5D022&0'

若要使用特定接口测试设备,请执行以下作:

Interfaces::InterfaceGUID

若要测试具有特定驱动器号的设备:

Volume::DriverLetter=’DriveLetter

例如,Volume::DriverLetter=’c:\’

若要使用特定驱动程序测试设备,请执行以下作:

DriverBinaryNames=mydriver.sys

其中 KMDFTest.inf 是用于安装驱动程序的 inf。 还可以使用以下语句将使用 KMDFTest.sys 驱动程序的设备作为目标。

DriverBinaryNames='KMDFTest.sys“) 有效。

正确设置 SDEL 后,应在控制台上运行测试时看到以下输出。

WDTF_TARGETS : INFO : - Query("IsDevice AND ((Inf::OriginalInfFileName='KMDFTest.inf'))") WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TEST : INFO : WARNING: The test is not enforcing that Driver Verifier is enabled.​ WDTF_TEST : INFO : DV is enabled with Flag:=0x209bb​ WDTF_TEST : INFO : DV is successfully enabled for all drivers of this devnode(UniqueTargetName):=KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGET : INFO : - GetInterface("Support")​ WDTF_TARGET : INFO : Target: DESKTOP-2OVFH3G​ WDTF_TARGETS : INFO : - Query("IsDevice")​ WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGETS : INFO : - GetRelations("below-or-self/","IsDevice")​ WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGETS : INFO : - GetInterfacesIfExist("SimpleIOStressProc")​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 no Simple IO Interface was found.​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 WDTF will use the ANY Simple IO Interface.​

有关更多详细信息,请参阅附加的文件配置文件和日志文件。 WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TEST : INFO : Perform 1 cycle(s) of I/O termination test​ WDTF_TEST : INFO : I/O termination cycle #1​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - StartAsync(KMDFTest Device ROOT\SAMPLE\0000 )​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - WaitAsyncCompletion(KMDFTest Device ROOT\SAMPLE\0000 )​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 no Simple IO Interface was found.​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 WDTF will use the ANY Simple IO Interface.​ WDTF_SIMPLE_IO : INFO : - Open(KMDFTest Device ROOT\SAMPLE\0000 ) Try count 1​ WDTF_SUPPORT : INFO : - WaitForMinutes : 1​ WDTF_SIMPLE_IO : INFO : - PerformIO(KMDFTest Device ROOT\SAMPLE\0000 ) Count 1​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - Terminate(KMDFTest Device ROOT\SAMPLE\0000 ) process

测试特定设备类的所有设备:

例如, Class=CDROM 将测试 CDROM 类的所有设备。

例如, ClassGUID= {36fc9e60-c465-11cf-8056-444553540000} 将测试其类 GUID 与指定 GUID 匹配的所有设备。 在这种情况下,GUID 适用于 USB 类。

DoPoolCheck

对或错。 通过使用池标记和旁视列表监控驱动程序对分页和非分页系统内存池的使用情况。 此选项还会监视所处理的异常数的更改,这可能指示异常处理中的错误。

ChangeBufferProtectionFlags

对或错。 更改传递给测试设备的缓冲区的内存保护标志。 此内存保护标志在无访问权限、只读和具有页防护的只读之间变化。

DoSimpleIO

对或错。 在执行 PNP 操作之前和之后,在测试设备上运行简单 I/O(如发现)。

DoConcurrentIO

对或错。 在执行 PnP作时,使用 WDTF 并发 I/O 接口将 I/O 请求发送到目标设备堆栈。

FillZeroPageWithNull

对或错。 将零页映射,并用空值填充。 此测试用于识别那些在解除指针引用前没有验证指针引用的驱动程序。

FuzzTestPeriod

模糊测试周期(分钟)。

HPU

指定高处理器利用率百分比。

模拟

对或错。 以没有管理员权限的用户身份运行测试。

IOPeriod

指定 I/O 周期(以分钟为单位)。

IOType

指定 I/O 压力测试的类型:SimpleIOStressEx 或 SimpleIOStressProc(单独进程中的 I/O)。

LPU

指定低处理器利用率百分比

MaxInBuffer

指定测试传递至 FSCTL(或 IOCTL,对于 IOCTL 测试)中的驱动程序的输入缓冲区最大大小(字节)。

MinInBuffer

指定测试传递至 FSCTL(或 IOCTL,对于 IOCTL 测试)中的驱动程序的输入缓冲区最小大小(字节)。

MaxOutBuffer

指定测试传递至 FSCTL(或 IOCTL,对于 IOCTL 测试)中的驱动程序的输出缓冲区最大大小(字节)。

MinOutBuffer

指定测试传递至 FSCTL(或 IOCTL,对于 IOCTL 测试)中的驱动程序的输出缓冲区最小大小(字节)。

MaxRandomCalls

指定测试发出的最大调用次数。

MaxTailoredCalls

指定在定制的随机测试中测试发出的最大调用次数。

MaxDeviceType

指定 FSCTL(或 IOCTL,对于 IOCTL 测试)中的 DeviceType 字段的最大值。 最大可能值为 65535。

MinDeviceType

指定 FSCTL(或 IOCTL,对于 IOCTL 测试)中的 DeviceType 字段的最小值。 最小值为 0。

MaxFunctionCode

指定 FSCTL(或 IOCTL,对于 IOCTL 测试)中的 FunctionCode 字段的最大值。 最大可能值为 4095。

MinFunctionCode

指定 FSCTL(或 IOCTL,对于 IOCTL 测试)中的 FunctionCode 字段的最小值。 最小值为 0。

PU

指定处理器利用率百分比

PingPongPeriod

指定乒乓周期(分钟);它是指处理器在高 (HPU) 和低 (LPU) 处理器使用率水平之间变化的时间。

ResumeDelay

计算机从睡眠模式恢复后以及下一个 I/O 周期开始前的延迟时间(以秒为单位)。 延迟时间是允许设备还原其工作状态(续订网卡的 IP 地址等)所必需的。

TestCycles

指定要执行的测试周期数(迭代)。

WDTFREMOTESYSTEM

仅当受测设备或其子设备之一是没有 IPv6 网关地址的有线网络适配器时,才需要此参数。 如果网络上需要此参数,则必须提供测试网络适配器可以 ping 以测试网络的 IPv6 地址。

示例: fe80::78b6:810:9c12:46cd

Wpa2PskAesSsid

仅当受测试的设备或其子设备之一是 WiFi 适配器时,才需要此参数。 提供测试可用于测试 WiFi 适配器的 WPA2 AES WiFi 网络的 SSID。

默认值: kitstestssid

Wpa2PskPassword

仅当受测试的设备或其子设备之一是 WiFi 适配器时,才需要此参数。 提供使用 Wpa2PskAesSsid 参数指定的 WPA2 AES WiFi 网络的密码。

默认值: 密码

实用工具测试

测试 DESCRIPTION

显示具有 WDTF 简单 I/O 插件的设备

参数: 没有

显示启用了驱动程序验证程序的设备

参数: 没有

显示设备

参数: 没有

驱动验证工具

测试 DESCRIPTION

禁用驱动程序验证程序

在测试计算机上禁用 驱动程序验证程序

参数: 没有

启用驱动程序验证程序

可以使用此测试为测试计算机上的设备(或设备)的所有驱动程序启用 驱动程序验证程序

参数: - 请参阅 驱动程序验证程序选项