| Previous | Next |
| TPM_E_DELEGATE_LOCK | TPM_E_DELEGATE_ADMIN |
TPM_E_DELEGATE_FAMILY
The state machine behind the code
TPM_E_DELEGATE_FAMILY (0x8028004C) 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 delegation operation targets a family different from the one authorized by the delegation blob.
Evidence table
| Question | Evidence for this HRESULT |
|---|---|
| What exact state was rejected? | a delegation operation targets a family different from the one authorized by the delegation blob |
| Which layer owns the result? | The TPM resource, context or delegation manager, sometimes mediated by TBS virtualization. |
| What must be correlated? | family ID in the command, family ID and count in the delegation blob, delegation row, owner state, and application mapping |
| What is the controlled comparison? | decode both family references and test a freshly issued delegation for the selected family |
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.
Reproduction plan
The one-variable check is to decode both family references and test a freshly issued delegation for the selected family. 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.
- Capture this result and
0x8028004Cat the first code-specific return boundary. - Decode the result state: handle namespace, owning context, save/load history, family state and resource lifetime.
- Run the result controlled comparison once and preserve both binary transcripts.
- Verify the expected this result output or state transition instead of relying on absence of a UI message.
Contrast with neighboring results
| Comparison code | Built-in distinction |
|---|---|
TPM_E_DELEGATE_ADMIN | Delegation table management not enabled — a separate checkpoint when compared with it. |
TPM_E_DELEGATE_LOCK | The delegate administration is locked — a separate checkpoint when compared with it. |
TPM_E_TRANSPORT_NOTEXCLUSIVE | There was a command executed outside of an exclusive transport session — a separate checkpoint when compared with it. |
It specifically answers whether a delegation operation targets a family different from the one authorized by the delegation blob. In contrast, TPM_E_INVALID_FAMILY rejects a nonexistent family, while it identifies cross-family use of a delegation.
Confirming remediation
To remediate it, issue a new delegation under the intended family rather than rewriting identifiers in an existing blob. 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
- Microsoft: Resource Virtualization in TBS — source for the checkpoint.
- Microsoft: Command Scheduling in TBS — source for the checkpoint.
- Microsoft: Using TPM Base Services — source for the checkpoint.
- TCG: TPM 1.2 Part 3 — Context commands — source for the checkpoint.
Looking for a different code? Search another status or error code.
