EHDD Test

This test verifies that an encrypted hard drive complies with Microsoft and Industry specifications.

Test details

   
Specifications
  • Device.Storage.Hd.Ehdd.Compliance
Platforms
  • Windows 10, client editions (x86)
  • Windows 10, client editions (x64)
  • Windows Server 2016 (x64)
Supported Releases
  • Windows 10
  • Windows 10, version 1511
  • Windows 10, version 1607
  • Windows 10, version 1703
  • Windows 10, version 1709
  • Windows 10, version 1803
  • Windows 10, version 1809
  • Windows 10, version 1903
  • Next update to Windows 10
Expected run time (in minutes) 30
Category Compatibility
Timeout (in minutes) 1800
Requires reboot false
Requires special configuration false
Type automatic

 

Additional documentation

Tests in this feature area might have additional documentation, including prerequisites, setup, and troubleshooting information, that can be found in the following topic(s):

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

For generic troubleshooting of HLK test failures, see Troubleshooting Windows HLK Test Failures.

  • 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.

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

 

Parameters

Parameter name Parameter description
LLU_LclAdminUsr User account for running the test.
LLU_NetAccessOnly User account for accessing test fileshare.
WDKDeviceID Instance path of device to test.
DiskDeviceObjLink Assigned by Create Storage Parameters.
PSID The device's PSID
Destructive (0,1) 0=Passive, 1=Destructive