| Previous | Next |
| TBSIMP_E_UNKNOWN_ORDINAL | TBSIMP_E_INVALID_RESOURCE |
TBSIMP_E_RESOURCE_EXPIRED
Meaning beyond the built-in message
TBSIMP_E_RESOURCE_EXPIRED (0x80290213) belongs to TBS resource virtualization. The base What Is page already shows the short Windows message; the additional diagnostic value is that this result marks a virtualized TPM resource has passed the lifetime in which TBS can restore or use it.
Decode the relevant state
| Question | Evidence for this HRESULT |
|---|---|
| What exact state was rejected? | a virtualized TPM resource has passed the lifetime in which TBS can restore or use it |
| Which layer owns the result? | The TBS context and virtual-resource manager that maps finite TPM slots for multiple clients. |
| What must be correlated? | virtual handle, resource type, creating context, eviction/save state, close or power event, timestamp, and service generation |
| What is the controlled comparison? | create a fresh resource and use it immediately before any sleep, close or service transition |
Separate caller data from platform state. The result caller data includes the command, structures, lengths, handles and flags; platform state includes TPM generation, provisioning, locality, lockout, resource inventory, firmware and the TBS service lifecycle. This result is actionable only after the rejected side is identified.
One-variable test
Use the following verification sequence:
- Capture the unmodified failing input and
0x80290213. - Create a fresh resource and use it immediately before any sleep, close or service transition.
- Compare the first result divergent field or state transition.
- Repeat this result only after restoring the same baseline, with a bounded retry policy where the specification permits retry.
Differential diagnosis
| Other code | Why a different remedy follows |
|---|---|
TBSIMP_E_INVALID_RESOURCE | The resource type did not match — a separate checkpoint when compared with this result. |
TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS | There are too many TPM contexts in use — a separate checkpoint when compared with it. |
TBSIMP_E_NOTHING_TO_UNLOAD | No resources can be unloaded — a separate checkpoint when compared with it. |
TBSIMP_E_INVALID_RESOURCE means the resource type is wrong, while this code says a once-valid resource expired. The result difference determines whether to change serialization, authorization, resource lifetime, firmware/PPI state, command policy or only retry timing.
Supported corrective direction
Correct the original boundary by choosing this direction: recreate expired resources and avoid persisting virtual handles beyond the owning context lifetime. Do not confuse a TBS virtual handle with a physical TPM handle or copy it to another process. Resource virtualization intentionally scopes mappings to a client context.
A successful it outcome preserves the intended hardware trust boundary, passes the original request, and produces verifiable output. Masking it, swallowing this HRESULT or switching silently to a software provider is not remediation.
References used for this checkpoint
- Microsoft: Resource Virtualization in TBS — source for the checkpoint.
- Microsoft: Command Scheduling in TBS — source for the checkpoint.
- Microsoft: About TPM Base Services — source for the checkpoint.
- Microsoft: Power Management in TBS — source for the checkpoint.
Looking for a different code? Search another status or error code.