Site icon EfmSoft

What does HRESULT 0x8028002E (TPM_E_BAD_VERSION) mean?

 
Previous Next
TPM_E_BAD_PRESENCE TPM_E_NO_WRAP_TRANSPORT

TPM_E_BAD_VERSION

Read the result in context

TPM_E_BAD_VERSION (0x8028002E) belongs to TPM 1.2 command processing. The base What Is page already shows the short Windows message; the additional diagnostic value is that this result marks the requested TPM 1.2 capability or structure version is not implemented by the device for that operation.

The first producer to identify for this HRESULT is the TPM 1.2 command decoder and state machine. TPM 1.2 is a command/response device with strict binary structures and stateful resources. Windows may present the device response as an HRESULT, but the diagnostic meaning still belongs to the command field, key, session, PCR, NV index or lifecycle check named by the TPM specification.

Fields worth decoding

QuestionEvidence for this HRESULT
What exact state was rejected?the requested TPM 1.2 capability or structure version is not implemented by the device for that operation
Which layer owns the result?The TPM 1.2 command decoder and state machine.
What must be correlated?capability area, subcap, requested version fields, TPM revision, manufacturer ID, and the client library version that formed the request
What is the controlled comparison?query a baseline capability supported by the detected TPM revision and compare the serialized version fields

A useful this result trace links three code-specific timelines: the application call, the local TBS/provider or firmware event, and the raw command/response exchange. The result timestamps should describe one attempt; combining data from separate retries is particularly misleading for authorization sessions, context counters, DAA stages and lockout state.

Controlled comparison

The one-variable check is to query a baseline capability supported by the detected TPM revision and compare the serialized version fields. Record the before/after state that the result command is allowed to change. If the operation can have side effects, use a disposable key, session, counter or NV index rather than production material.

  1. Capture this result and 0x8028002E at the first code-specific return boundary.
  2. Decode the result state: raw command and response bytes, command ordinal, structure tags and the relevant TPM state.
  3. Run the result controlled comparison once and preserve both binary transcripts.
  4. Verify the expected this result output or state transition instead of relying on absence of a UI message.

Adjacent failure boundaries

Comparison codeBuilt-in distinction
TPM_E_NO_WRAP_TRANSPORTThe TPM does not allow for wrapped transport sessions — a separate checkpoint when compared with it.
TPM_E_BAD_PRESENCEEither the physicalPresence or physicalPresenceLock bits have the wrong value — a separate checkpoint when compared with it.
TPM_E_AUDITFAIL_UNSUCCESSFULTPM audit construction failed and the underlying command was returning a failure code also — a separate checkpoint when compared with it.

It specifically answers whether the requested TPM 1.2 capability or structure version is not implemented by the device for that operation. In contrast, TPM_E_INVALID_POSTINIT is a startup-order failure, not a version negotiation failure.

Repair without destroying evidence

To remediate it, select the contract for the actual TPM generation and capability level; do not reinterpret a TPM 2.0 device as a 1.2 endpoint. Do not clear ownership, delete keys or reset PCR-related state merely to see whether the message disappears; those actions can destroy the evidence and protected material while leaving serialization or command-order defects unchanged.

After correcting it, start with a fresh caller context where the protocol requires one, replay the original intended operation, and confirm that hardware-backed policy remains enforced.

Authoritative references


Looking for a different code? Search another status or error code.

Exit mobile version