| Previous | Next |
| TBS_E_PPI_NOT_SUPPORTED | TBS_E_BUFFER_TOO_LARGE |
TBS_E_COMMAND_CANCELED
Technical interpretation
TBS_E_COMMAND_CANCELED (0x8028400D) belongs to the public and internal TPM Base Services path. The base What Is page already shows the short Windows message; the additional diagnostic value is that this result marks a command submitted through TBS was canceled before a normal TPM result was returned.
The first producer to identify for it is the TBS client library, local RPC service and command scheduler before or around device execution. TBS centralizes TPM access through a local RPC service. A failure can therefore occur in the caller contract, RPC/service startup, scheduling, buffer handling or TPM submission, and each layer requires different evidence.
Inputs and state to capture
| Question | Evidence for it |
|---|---|
| What exact state was rejected? | a command submitted through TBS was canceled before a normal TPM result was returned |
| Which layer owns the result? | The TBS client library, local RPC service and command scheduler before or around device execution. |
| What must be correlated? | context handle, cancel request, power transition, service shutdown, command duration, caller timeout, and whether the command has side effects |
| What is the controlled comparison? | repeat a known idempotent command without cancellation and trace the context until completion |
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.
Validate without broad changes
Use the following verification sequence:
- Capture the unmodified failing input and
0x8028400D. - Repeat a known idempotent command without cancellation and trace the context until completion.
- 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.
Neighboring response codes
| Other code | Why a different remedy follows |
|---|---|
TBS_E_BUFFER_TOO_LARGE | The input or output buffer is too large — a separate checkpoint when compared with this result. |
TBS_E_SERVICE_START_PENDING | The TBS service has been started but is not yet running — a separate checkpoint when compared with it. |
TBS_E_ACCESS_DENIED | The caller does not have the appropriate rights to perform the requested operation — a separate checkpoint when compared with it. |
TPM_E_RETRY is a device request to resubmit; cancellation is imposed by TBS, the caller, or power management. The result difference determines whether to change serialization, authorization, resource lifetime, firmware/PPI state, command policy or only retry timing.
Fix and verify
Correct the original boundary by choosing this direction: coordinate cancellation and object lifetime, then recreate volatile state that may have been lost across the canceled operation. Do not restart or disable TBS before capturing its service and event data. Most caller-contract errors are reproducible without touching TPM ownership, firmware state or stored keys.
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: About TPM Base Services — source for the checkpoint.
- Microsoft: TBS return codes — source for the checkpoint.
- Microsoft: Tbsi_Context_Create — source for the checkpoint.
- Microsoft: Tbsip_Submit_Command — source for the checkpoint.
Looking for a different code? Search another status or error code.
