EHDD 测试
此测试验证已加密的硬盘驱动器是否符合 Microsoft 和行业规范。
测试详细信息
规范 |
|
平台 |
|
支持的版本 |
|
预计运行时间(以分钟为单位) | 30 |
类别 | 兼容性 |
超时(以分钟为单位) | 1800 |
需要重启 | false |
需要特殊配置 | false |
类型 | automatic |
其他文档
此功能区域中的测试可能会有其他文档,包括先决条件、设置和故障排除信息,这些内容可在以下主题中找到:
运行测试
在运行测试之前,请按照测试要求(硬盘驱动器测试先决条件)中所述完成测试设置。
EHDD 设备必须连接到相应的控制器。 作业将用正确的分区和格式化准备磁盘,以进行测试。 测试具有破坏性,因此磁盘不能是启动磁盘。 尽可能减少徽标测试之外的驱动器上发生的活动量非常重要。 由于此测试具有性能元素,因此外部活动可能会影响结果。 需要在运行时输入驱动器的 PSID,因为无法以编程方式获取此值。
故障排除
有关 HLK 测试失败的常规故障排除,请参阅 Windows HLK 测试失败疑难解答。
检查 WTT 跟踪:
查看执行 EHDD 测试的任务日志。
打开日志文件 EHDDLogoTest.wtl。
检查可能解决问题的消息。
检查并重播 TCG 命令跟踪:
如果出现错误,则会日志记录发送给驱动程序的所有命令。 遇到错误时,自上一次恢复起的跟踪将以 .error 扩展名保存在运行测试的文件夹中。
在文本编辑器中打开数值最高的 FullCommandoutput#.txt.error。
查找失败的原因。
可以回放 SerializedCommands#.error 文件来重现观察到的错误。
通过重播错误文件确定这是否是一致的重现。 示例:EhddLogoTest.exe /DeviceID "\\.\physicaldrive1" /PSID "G98D72LDPW2DF9HDN30HG0G30H409HG4" /Playback SerializedCommands1.error
无法开始日志记录 EhstorTCGDrvTrace:
如果测试的前一次运行过早中断,则跟踪日志的保留时间可能会超出二进制文件的生命周期。
将出现以下错误:
Executing "cmd.exe /c logman.exe start EhstorTcgDrvTrace -ets -p {aa3aa23b-bb6d-425a-b58c-1d7e37f5d02a} -ft 1 -rt -o perflog.etl"Command execution exited with code: -2144337737 Could not start logging for EhstorTcgDrvTrace
打开提升的 cmd 窗口,右键单击 cmd.exe (C:\Windows\System32\cmd.exe) 并选择以管理员身份运行。
运行 logman -query -ets
运行 logman -stop -ets EhstorTcgDrvTrace
有关故障排除信息,请参阅排查 Device.Storage 测试问题。
更多信息
作业获取受测设备的设备实例 ID 和设备的 PSID。 作业将设备实例 ID 转换为物理驱动器号,以便在该设备上运行测试。 作业对驱动器进行分区和格式化,使其配置符合测试要求。 EhddLogoTest 将通过一系列测试用例运行,每个测试用例都映射到要求中的项。 测试用例是自包含的,一个测试用例的结果不应影响其他测试用例,因为驱动器会在每个测试用例之间恢复并激活。 下面列出了测试案例:
ATA 标识
带
Com 数据包大小
加密模式
固定 ACL 模式
模糊
密钥长度
元数据
可修改公用名
Opal 版本
查询接收器
范围跨越
机密保护
SID 禁用
TCG 堆栈重置
TPer 重置
未经身份验证的擦除
其中每个测试用例都可以使用独立模式下的测试在命令行上运行,以进行进一步的测试或调试。 当独立运行测试时,模糊测试用例有一个可选参数,用于表示模糊迭代数。
在测试过程中,发送到驱动器的命令将被日志记录,如果出现错误,则将以纯文本形式 (FullCommandoutput#.txt.error) 和重播文件 (SerializedCommands#.error) 形式保存此日志。 每次作为命令进行恢复时,都会重置日志,因为最后一次恢复应该足以重现失败。 可以使用播放参数启动测试,以重播导致失败的一系列命令。
命令语法
参数 | 说明 |
---|---|
EhddLogoTest |
用于测试的二进制文件。 |
/DeviceID |
EHDD 设备驱动器号。 示例:/DeviceID \\\\.\\PhysicalDrive1 |
/PSID |
设备的 PSID。 示例:/PSID VUTSRQPONMLKJIHGFEDCBA9876543210 |
/Seed |
用于生成随机测试数据的种子值。 示例:/Seed 1000 |
/RunTestCaseType |
仅运行指定类别的测试用例:设备、配置文件或方案。 示例:/RunTestCaseTypes device |
/RunTestCase |
仅运行指定的测试用例:ATAIdentify、Band、ComPacketSize、EncryptionMode、FixedACLMode、Fuzz、KeyLength、Metadata、ModifiableCommonName、OpalVersion、QuerySilo、RangeCrossing、SecretProtect、SIDDisable、TCGStackReset、TPerReset 或 UnauthenticatedErase。 示例:/RunTestCase Band |
/FuzzIterations |
运行模糊方案的迭代数。 仅在运行模糊方案时有效。 示例:/FuzzIterations 1000 |
/SkipManualTestCases |
跳过需要手动交互的测试用例。 示例:/SkipManualTestCases |
/Debugger |
提示附加调试程序,以留出时间在进一步执行程序之前附加调试程序。 示例:/Debugger |
/Verbosity |
日志记录详细程度。 日志记录详细程度级别:Minimal、Default 或 Verbose。 示例:/Verbosity Verbose |
/Playback |
播放以前录制的命令日志文件。 示例:/Playback RecordedCommand.err |
/Log |
日志名称 默认值:LogoTest.wtl 示例:/log mytestlog.wtl |
/cmdPerfTraceAnalysis |
运行命令性能分析:Never、OnPassed 或 Always。 示例:/cmdPerfTraceAnalysis Always |
/cmdPerfTraceLogFile |
性能输出跟踪日志 commandText。 默认值:perf-tracelog.etl 示例:/cmdPerfTraceLogFile perf-tracelog.etl |
命令用法
命令 | 说明 |
---|---|
EhddLogoTest.exe /DeviceID "[DiskDeviceObjLink]" /PSID "[PSID]" |
运行指定设备实例 ID 和 PSID 的测试。 |
注意
有关此测试二进制文件的命令行帮助,请键入 /?。
文件列表
文件 | 位置 |
---|---|
EhddFuzzer.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddInterop.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddLogoTest.exe |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddModularTestCase.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddTestCases.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddTestHarness.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddTestLib.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
EhddTraceLib.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
Tcglibutil.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
StorageDevices.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ehdd |
参数
参数名称 | 参数说明 |
---|---|
LLU_LclAdminUsr | 用于运行测试的用户帐户。 |
LLU_NetAccessOnly | 用于访问测试文件共享的用户帐户。 |
WDKDeviceID | 要测试的设备的实例路径。 |
DiskDeviceObjLink | 通过创建存储参数分配。 |
PSID | 设备的 PSID |
Destructive | (0,1) 0=被动,1=破坏性 |