What does HRESULT 0x80280043 (TPM_E_INVALID_STRUCTURE) mean?

 
Previous Next
TPM_E_BAD_ATTRIBUTES TPM_E_KEY_OWNER_CONTROL

TPM_E_INVALID_STRUCTURE

Classify the layer correctly

TPM_E_INVALID_STRUCTURE (0x80280043) belongs to TPM 1.2 resources, delegation and contexts. The base What Is page already shows the short Windows message; the additional diagnostic value is that this result marks a TPM 1.2 structure has an inconsistent tag, version or layout for the command that parses it.

Incident worksheet

QuestionEvidence for this HRESULT
What exact state was rejected?a TPM 1.2 structure has an inconsistent tag, version or layout for the command that parses it
Which layer owns the result?The TPM resource, context or delegation manager, sometimes mediated by TBS virtualization.
What must be correlated?raw blob bytes, outer and nested tags, version fields, declared lengths, byte order, source library version, and command ordinal
What is the controlled comparison?decode the complete blob using the matching TPM 1.2 structure definition and compare with a newly generated object

A reproducible comparison

The one-variable check is to decode the complete blob using the matching TPM 1.2 structure definition and compare with a newly generated object. 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 0x80280043 at the first code-specific return boundary.
  2. Decode the result state: handle namespace, owning context, save/load history, family state and resource lifetime.
  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.

Boundaries often confused with this one

Comparison codeBuilt-in distinction
TPM_E_KEY_OWNER_CONTROLThe key is under control of the TPM Owner and can only be evicted by the TPM Owner — a separate checkpoint when compared with it.
TPM_E_INVALID_RESOURCEWhen saving context identified resource type does not match actual resource — a separate checkpoint when compared with it.
TPM_E_BAD_COUNTERThe counter handle is incorrect — a separate checkpoint when compared with it.

It specifically answers whether a TPM 1.2 structure has an inconsistent tag, version or layout for the command that parses it. In contrast, TPM_E_BAD_TYPE is tied to an incorrect identity/blob type; it covers general structural inconsistency.

Restore service safely

To remediate it, regenerate the structure with one versioned serializer and reject cross-version or partially rewritten blobs. Do not persist volatile TPM or TBS handles as durable identifiers. A numeric handle can be valid only inside the creating context and lifecycle, even when its value looks unchanged after restart.

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.