| Previous | Next |
| TAPI_E_INUSE | TAPI_E_INVALADDRESS |
OLE_E_PROMPTSAVECANCELLED
User cancelled the OLE save prompt
OLE_E_PROMPTSAVECANCELLED is HRESULT 2147745804 (0x8004000C) from winerror.h. AllStat describes it as “User canceled out of save dialog” The result belongs to closing, deactivating, or updating an OLE object that prompted to save changes. The important boundary is not merely failure but which object and state transition established: the operation stopped because the user explicitly cancelled the save decision.
The decisive meaning of this result is that the operation stopped because the user explicitly cancelled the save decision. The severity bit does not decide handling; the controlling fact is that the operation stopped because the user explicitly cancelled the save decision. Interpret it at the native boundary before a wrapper hides the condition that the operation stopped because the user explicitly cancelled the save decision.
Where the result appears
- This result can surface in a compound-document containers, embedded or linked objects, OLE activation, advising, caching, conversion, and persistence.
- map the failure to one concrete operation among IOleObject, IOleLink, IOleCache, IAdviseSink, IPersistStorage, IOleInPlaceObject, monikers, verbs, and client-site callbacks.
- Preserve CLSID, object and client-site identity, storage or moniker, advise cookie, verb, activation state, window generation, and presentation format before releasing or replacing the object that returned this result.
An incident record for this HRESULT must distinguish caller, runtime, provider, and backing resource while testing whether the operation stopped because the user explicitly cancelled the save decision.
Typical causes and interpretation boundary
The immediate contract boundary is specific: the operation stopped because the user explicitly cancelled the save decision. Common cause branches include the following:
- The user chose Cancel in the server prompt.
- Automation triggered an interactive save flow.
- Shutdown policy did not define how modified embedded data should be handled.
Confirm the cause branch that explains why the operation stopped because the user explicitly cancelled the save decision by using call arguments, object state, metadata, device information, or provider traces.
Correct handling and recovery
The primary recovery is to preserve the modified object and return control to the user; never loop the prompt or discard changes automatically. The result failure report should expose enough closing, deactivating, or updating an OLE object that prompted to save changes state to understand why the operation stopped because the user explicitly cancelled the save decision without a production debugger.
Retry this result only when evidence shows the state behind “the operation stopped because the user explicitly cancelled the save decision” can change and the operation is repeatable. Reconcile persistent, remote, device, or ownership state before repeating it.
Practical scenario
A document close asks whether to save edits made inside an embedded object; Cancel keeps both the document and server open. Record the decisive state for this HRESULT and verify recovery on a fresh object or request generation.
Difference from related HRESULTs
OLE_E_CANTCONVERT and storage failures are technical errors; it represents an intentional user decision Tests and telemetry should preserve that boundary for this HRESULT.
Developer and administrator guidance
Developers handling it should make object lifetime and state transitions explicit, preserve the native HRESULT, and keep cleanup paths safe when initialization or output is partial. Build a small container/server fixture that covers loaded, running, in-place active, UI-active, static, linked, and shutdown states.
Administrators should repair the component owning closing, deactivating, or updating an OLE object that prompted to save changes as a versioned unit instead of copying arbitrary DLLs. Repair for this HRESULT should target only the evidence-backed component, provider, document, device, or configuration.
References
- Microsoft: generic COM and OLE error codes
- Microsoft: IOleObject
- Microsoft: OLE and data-transfer interfaces
- Microsoft: OLE view caching
Looking for a different code? Search another status or error code.
