| Previous | Next |
| CO_E_ACNOTINITIALIZED | RPC_E_UNEXPECTED |
CO_E_CANCEL_DISABLED
COM call cancellation is disabled
CO_E_CANCEL_DISABLED is HRESULT 2147549504 (0x80010140) from winerror.h. AllStat describes it as “Call Cancellation is disabled.” The value must be interpreted at CoCancelCall or cancellation-aware COM call control, because the same high-level symptom can come from a different contract boundary and require different cleanup.
The decisive interpretation for CO_E_CANCEL_DISABLED is that the caller attempted to cancel a call on a thread or call context where cancellation has not been enabled. The operational record for CO_E_CANCEL_DISABLED needs the native value, symbolic constant, component build, and call phase; the message alone is insufficient.
Where the result appears
- CO_E_CANCEL_DISABLED may surface in CoCancelCall or cancellation-aware COM call control.
- The first boundary to preserve for CO_E_CANCEL_DISABLED is the exact activation, initialization, call-control, or lifetime step that returned it.
- For CO_E_CANCEL_DISABLED, record whether the failure occurred before an object identity existed, while a method was running, or during shutdown; those phases imply different ownership and retry rules.
For CO_E_CANCEL_DISABLED, separate caller state from runtime and server state first; otherwise cleanup and retry may target the wrong generation of the operation.
Typical causes and interpretation boundary
Common cause categories for CO_E_CANCEL_DISABLED are: the thread never enabled cancellation; cancellation was disabled too early; the wrong thread is targeted; no cancellable call context exists. Each possible cause of CO_E_CANCEL_DISABLED predicts different outputs and recovery behavior, which should be verified explicitly.
The check that separates CO_E_CANCEL_DISABLED from nearby HRESULTs is: the caller attempted to cancel a call on a thread or call context where cancellation has not been enabled. Without proof of the distinguishing condition for CO_E_CANCEL_DISABLED, the safest action is to preserve evidence and refrain from destructive cleanup.
Evidence and telemetry
- Record CO_E_CANCEL_DISABLED together with the CLSID, IID, method or control operation, server type, process architecture, and component build.
- Capture CO_E_CANCEL_DISABLED evidence: target thread ID; CoEnableCallCancellation result; active call; apartment model; enable/disable balance; shutdown phase.
- Preserve the apartment model, thread ID, package or service identity, activation flags, UTC time, and correlation ID associated with CO_E_CANCEL_DISABLED.
- For CO_E_CANCEL_DISABLED, retain the earliest lower-level Win32, RPC, MSI, SxS, CLR, loader, or security event instead of logging only the final HRESULT.
- After CO_E_CANCEL_DISABLED, mark every returned interface pointer, handle, cookie, or output parameter as valid only when the owning API explicitly says so.
A useful CO_E_CANCEL_DISABLED event contains ownership and shape information, not raw documents, passwords, access tokens, or full Automation values.
Diagnostic sequence
- Capture the raw value 0x80010140 and symbolic name CO_E_CANCEL_DISABLED before a wrapper translates it to a generic exception.
- Identify the exact COM entry point and lifecycle phase for CO_E_CANCEL_DISABLED: initialization, activation, QueryInterface, method execution, cancellation, registration, or teardown.
- Validate the decisive condition for CO_E_CANCEL_DISABLED: the caller attempted to cancel a call on a thread or call context where cancellation has not been enabled.
- Test the principal causes separately for CO_E_CANCEL_DISABLED: the thread never enabled cancellation; cancellation was disabled too early; the wrong thread is targeted; no cancellable call context exists.
- Correlate client and server timelines, including process launch, class registration, RPC activity, security negotiation, and cleanup around CO_E_CANCEL_DISABLED.
- Change one precondition at a time, reproduce CO_E_CANCEL_DISABLED, and verify both the HRESULT and the object or server state after the call.
Correct handling and recovery
For CO_E_CANCEL_DISABLED, the appropriate recovery is to enable cancellation on the calling thread before the operation, balance enable and disable calls, and use operation-specific cancellation where available. For CO_E_CANCEL_DISABLED, repeat the operation only after the failed condition has changed and the caller can distinguish a duplicate effect.
When CO_E_CANCEL_DISABLED is returned, use the documented output contract and reconcile remote or persistent effects before replaying the request.
Practical scenario
A worker tries to cancel its long remote call without first enabling COM call cancellation; initialization is corrected at worker startup.
An automated test for CO_E_CANCEL_DISABLED should verify raw HRESULT, output ownership, cleanup behavior, and the absence of an unsafe automatic retry.
Difference from related HRESULTs
RPC_E_CALL_CANCELED means cancellation actually terminated a call; CO_E_CANCEL_DISABLED means the cancellation mechanism was unavailable.
The comparison matters operationally for CO_E_CANCEL_DISABLED: one result may permit fallback while the other requires repair, cancellation, or state reconciliation.
Developer and administrator guidance
Code handling CO_E_CANCEL_DISABLED should classify it by lifecycle and ownership rather than by the high bit alone. For <code>CO_E_CANCEL_DISABLED</code>, initialization failures normally require rebuilding the process or thread environment, capability results require a fallback, and uncertain remote outcomes require reconciliation before retry.
Operational dashboards should keep CO_E_CANCEL_DISABLED distinct from generic COM failures and attach deployment, service, package, runtime, policy, and architecture dimensions. Administrators should avoid broad registry edits, blanket firewall changes, or permission expansion unless the captured evidence for CO_E_CANCEL_DISABLED identifies that subsystem.
References
- Microsoft: CoInitializeEx — official Microsoft documentation relevant to
CO_E_CANCEL_DISABLED. - Microsoft: COM security defaults — official Microsoft documentation relevant to
CO_E_CANCEL_DISABLED. - Microsoft: common HRESULT values — official Microsoft documentation relevant to
CO_E_CANCEL_DISABLED. - Microsoft: HRESULT values — official Microsoft documentation relevant to
CO_E_CANCEL_DISABLED.
Looking for a different code? Search another status or error code.