EHDD Test
This test verifies that an encrypted hard drive complies with Microsoft and Industry specifications.
Test details
Associated requirements |
Device.Storage.Hd.Ehdd.Compliance |
Platforms |
Windows RT (ARM-based) Windows 8 (x64) Windows 8 (x86) Windows Server 2012 (x64) Windows RT 8.1 Windows 8.1 x64 Windows 8.1 x86 Windows Server 2012 R2 |
Expected run time |
~30 minutes |
Categories |
Certification Functional |
Type |
Automated |
Running the test
Before you run the test, complete the test setup as described in the test requirements: Hard Disk Drive Testing Prerequisites.
The EHDD device must be attached to the appropriate controller. The job will prepare the disk with the correct partition and formatting for the testing. The test is destructive and therefore the disk cannot be the boot disk. It is important to minimize the amount of activity occurring on the drive outside of the logo test. Since this test has performance elements, outside activity may affect the results. The PSID for the drive is required to be entered at runtime as this value cannot be obtained programmatically.
Troubleshooting
Check WTT Trace:
View Task Log of Execute EHDD Test.
Open the log file EHDDLogoTest.wtl.
Check for messages that may solve the issue.
Check and Replay TCG Command Trace:
All of the commands sent to the driver are logged in case of an error. When an error is encountered, the trace, since the previous revert, is saved with the .error extension in the folder where the test is run from.
Open in a text editor the FullCommandoutput#.txt.error with the highest number.
Look for the reason for the failure.
The SerializedCommands#.error file can be played back to reproduce the error observed.
Determine if this is a consistent repro by replaying the error file. EX: EhddLogoTest.exe /DeviceID "\\.\physicaldrive1" /PSID "G98D72LDPW2DF9HDN30HG0G30H409HG4" /Playback SerializedCommands1.error
Could not start logging for EhstorTCGDrvTrace:
If a previous run of the test gets interrupted prematurely, it is possible that the trace log will persist beyond the life of the binary.
You will see the following error:
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
Open an elevated cmd window and right-click cmd.exe (C:\Windows\System32\cmd.exe) and choose Run as administrator.
Run logman –query –ets
Run logman –stop –ets EhstorTcgDrvTrace
For troubleshooting information, see Troubleshooting Device.Storage Testing.
More information
The job takes in the device instance ID of the device under test and the PSID of the device. The job converts the device instance ID to a physical drive number in order to run the testing on that device. The job partitions and formats the drive to get it into the configuration needed for testing. The EhddLogoTest will run through a series of test cases each mapped to items in the requirements. The test cases are self-contained and results from one test case should not affect other test cases as the drive is reverted and activated between each test case. The following is a list of tests cases:
ATA Identify
Band
Com Packet Size
Encryption Mode
Fixed ACL Mode
Fuzz
Key Length
Metadata
Modifiable Common Name
Opal Version
Query Silo
Range Crossing
Secret Protect
SID Disable
TCG Stack Reset
TPer Reset
Unauthenticated Erase
Each of these test cases can be run on the command line using the test in standalone mode for further testing or debugging. The Fuzz test case has an optional argument for the number of fuzz iterations when running the test standalone.
During testing, the commands being sent to the drive are logged and if an error occurs this log is saved both in plaintext (FullCommandoutput#.txt.error) and in a replay file (SerializedCommands#.error). The log is reset every time a revert occurs as the commands, since the last revert should be sufficient to repro the failure. The test can be initiated with the playback argument to replay the series of commands leading up to the failure.
Parameters
Parameter | Description |
---|---|
PSID |
The PSID of the device. |
Command syntax
Parameter | Description |
---|---|
EhddLogoTest |
The binary for the test. |
/DeviceID |
The EHDD device drive letter. Example: /DeviceID \\\\.\\PhysicalDrive1 |
/PSID |
The PSID of the device. Example: /PSID VUTSRQPONMLKJIHGFEDCBA9876543210 |
/Seed |
Seed value for generating random test data. Example: /Seed 1000 |
/RunTestCaseType |
Runs only the specified category of test cases: device, profile, or scenario. Example: /RunTestCaseTypes device |
/RunTestCase |
Runs only the specified test case: ATAIdentify, Band, ComPacketSize, EncryptionMode, FixedACLMode, Fuzz, KeyLength, Metadata, ModifiableCommonName, OpalVersion, QuerySilo, RangeCrossing, SecretProtect, SIDDisable, TCGStackReset, TPerReset, or UnauthenticatedErase. Example: /RunTestCase Band |
/FuzzIterations |
Number of iterations to run the fuzz scenario. Only valid if running the fuzz scenario. Example: /FuzzIterations 1000 |
/SkipManualTestCases |
Skip test cases that needs manual interaction. Example: /SkipManualTestCases |
/Debugger |
Prompts to attach debugger which gives time to allow the debugger to be attached before further executing the program. Example: /Debugger |
/Verbosity |
Logging verbosity. Logging Verbosity Levels: Minimal, Default, or Verbose. Example: /Verbosity Verbose |
/Playback |
Playback a previously recorded command log file. Example: /Playback RecordedCommand.err |
/Log |
Log name Default value: LogoTest.wtl Example: /Log mytestlog.wtl |
/cmdPerfTraceAnalysis |
Run command performance analysis :Never, OnPassed, or Always. Example: /cmdPerfTraceAnalysis Always |
/cmdPerfTraceLogFile |
Performance output trace log commandText. Default value: perf-tracelog.etl Example: /cmdPerfTraceLogFile perf-tracelog.etl |
Command usage
Command | Description |
---|---|
EhddLogoTest.exe /DeviceID ”[DiskDeviceObjLink]” /PSID “[PSID]” |
Runs the test for the specified device instance ID and PSID. |
Note
For command line help for this test binary, type /?.
File list
File | Location |
---|---|
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 |