| Previous | Next |
| TBS_E_SERVICE_NOT_RUNNING | TBS_E_TOO_MANY_RESOURCES |
TBS_E_TOO_MANY_TBS_CONTEXTS
Which layer owns this HRESULT
TBS_E_TOO_MANY_TBS_CONTEXTS (0x80284009) 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 TBS cannot allocate another client context because the service context limit has been reached.
The first producer to identify for TBS_E_TOO_MANY_TBS_CONTEXTS is the TBS context and virtual-resource manager that maps finite TPM slots for multiple clients. For TBS_E_TOO_MANY_TBS_CONTEXTS, tBS resource virtualization maps client-visible virtual handles to finite physical TPM key, authorization and transport slots. For TBS_E_TOO_MANY_TBS_CONTEXTS, cleanup, eviction and context ownership determine whether a mapping can be restored.
The TBS_E_TOO_MANY_TBS_CONTEXTS value 0x80284009 should remain attached to the symbolic name. Some TBS_E_TOO_MANY_TBS_CONTEXTS logs store the value as a negative signed integer; others expose only a generic CNG, WMI, BitLocker or enrollment message. Neither substitution identifies the TBS cannot allocate another client context because the service context limit has been reached as precisely as TBS_E_TOO_MANY_TBS_CONTEXTS.
Diagnostic record
- Producer for
TBS_E_TOO_MANY_TBS_CONTEXTS: the TBS context and virtual-resource manager that maps finite TPM slots for multiple clients. - Rejected invariant: TBS cannot allocate another client context because the service context limit has been reached.
- Decisive capture: number of open contexts by process, leaked handles, service diagnostics, application concurrency, context close paths, and recent crashes.
- Safe comparison: close one disposable context and verify that another can be created without restarting the service.
How to verify the distinction
Build the TBS_E_TOO_MANY_TBS_CONTEXTS minimal case around the original command contract. Use a disposable object when the TBS_E_TOO_MANY_TBS_CONTEXTS request can write NV data, advance a counter, change authorization state or consume a lock transition. For TBS_E_TOO_MANY_TBS_CONTEXTS, the comparison is valid only when the caller, TPM generation and security policy remain the same.
| Question | Evidence for TBS_E_TOO_MANY_TBS_CONTEXTS |
|---|---|
| What exact state was rejected? | TBS cannot allocate another client context because the service context limit has been reached |
| Which layer owns the result? | For TBS_E_TOO_MANY_TBS_CONTEXTS, the TBS context and virtual-resource manager that maps finite TPM slots for multiple clients. |
| What must be correlated? | number of open contexts by process, leaked handles, service diagnostics, application concurrency, context close paths, and recent crashes |
| What is the controlled comparison? | close one disposable context and verify that another can be created without restarting the service |
Common false equivalences
| Constant | Checkpoint represented by its standard message |
|---|---|
TBS_E_TOO_MANY_RESOURCES | A new virtual resource could not be created because there are too many open virtual resources — a separate checkpoint when compared with TBS_E_TOO_MANY_TBS_CONTEXTS. |
TBSIMP_E_INVALID_CONTEXT_HANDLE | The specified context handle is invalid — a separate checkpoint when compared with TBS_E_TOO_MANY_TBS_CONTEXTS. |
TBSIMP_E_INVALID_CONTEXT_PARAM | An invalid context parameter was specified — a separate checkpoint when compared with TBS_E_TOO_MANY_TBS_CONTEXTS. |
The codes above may appear in the same TBS_E_TOO_MANY_TBS_CONTEXTS workflow, but they are not aliases. For TBS_E_TOO_MANY_TBS_CONTEXTS, TBSIMP_E_TOO_MANY_TBS_CONTEXTS is the internal implementation form of the same resource boundary.
What a real fix looks like
Pair every successful create with close and pool contexts only where the api design allows it. For TBS_E_TOO_MANY_TBS_CONTEXTS, do not confuse a TBS virtual handle with a physical TPM handle or copy it to another process. For TBS_E_TOO_MANY_TBS_CONTEXTS, resource virtualization intentionally scopes mappings to a client context.
Proof for TBS_E_TOO_MANY_TBS_CONTEXTS consists of a successful replay plus validation of the intended key, PCR, NV, context, event-log, provider or service result. A software fallback or a newly provisioned blank TPM answers a different question than TBS_E_TOO_MANY_TBS_CONTEXTS.
Source material
- Microsoft: Resource Virtualization in TBS — source for the
TBS_E_TOO_MANY_TBS_CONTEXTScheckpoint. - Microsoft: Command Scheduling in TBS — source for the
TBS_E_TOO_MANY_TBS_CONTEXTScheckpoint. - Microsoft: About TPM Base Services — source for the
TBS_E_TOO_MANY_TBS_CONTEXTScheckpoint. - Microsoft: Power Management in TBS — source for the
TBS_E_TOO_MANY_TBS_CONTEXTScheckpoint.
Looking for a different code? Search another status or error code.