| Previous | Next |
| CACHE_E_NOCACHE_UPDATED | OLEOBJ_E_INVALIDVERB |
OLEOBJ_E_NOVERBS
No verbs for OLE object
OLEOBJ_E_NOVERBS has hexadecimal value 0x80040180 (unsigned 2147746176, signed -2147221120). AllStat records “No verbs for OLE object”. The narrow interpretation is that The OLE object exposes no verbs that the container can invoke. The failing stage is enumerating commands or choosing a default activation action for an embedded object.
The high bit in 0x80040180 is set, so this is a failure rather than a success or informational result. Its facility field is 4 (FACILITY_ITF) and its low 16-bit code is 384 (0x0180). Those bit fields classify the value, but they do not identify the failing object by themselves; the native method, object identity, and first producer of this result remain essential.
API stage
Understanding this result requires this subsystem context: OLE verbs are object-advertised commands. Containers should construct UI from current enumeration and object state instead of assuming that standard-looking commands exist for every embedded class.
- Associate this result with one exact operation in IOleObject::EnumVerbs, IOleObject::DoVerb, container menus, object state, and verb availability.
- Confirm that this result came from enumerating commands or choosing a default activation action for an embedded object, rather than from cleanup or a wrapper that ran afterward.
- Preserve any IErrorInfo, underlying Win32 result, provider message, or callback failure that preceded it; the HRESULT alone should not erase a more specific cause.
Verification steps
- Capture it at the first native return before a wrapper maps it to a generic exception.
- Identify the exact object, method, and lifecycle phase involved in enumerating commands or choosing a default activation action for an embedded object.
- Call EnumVerbs and preserve its exact result.
- Record object CLSID, server version, and whether cached data is still displayable.
- Avoid inferring verbs from another version or from file associations.
- Reproduce it with one controlled input or state change, and verify that the correction changes the decisive evidence rather than merely hiding the result.
Interpretation limits
- It can result when the object is data-only and intentionally has no interactive verbs.
- It can result when the server registration or implementation omitted its verb definitions.
- It can result when the container assumes every embedded class supports open, show, edit, or primary activation.
Incident record
A useful incident records the verb ID, enumerated OLEVERB records, object CLSID, activation state, client site, parent HWND, MSG pointer, rectangle, and server response. Also retain the application and component build, architecture, process and thread IDs, COM apartment, operation correlation ID, elapsed time, and the first state-changing event before the failure. When logging it, redact content and credentials while preserving types, lengths, hashes, opaque identities, and lifecycle generations needed to reproduce its contract.
Recovery conditions
Correction. for it, present the object as noninteractive, use a class-specific command, or repair the server only when its contract requires verbs. Retry boundary. Retry only after object replacement or server repair; repeatedly asking the same object to enumerate verbs cannot create them. Before repeating the operation, restore container menus and active-object state, close any partially activated UI, and re-enumerate verbs after the object or server changes.
Practical scenario
A report embeds a static data object with a valid presentation but no editor; the container displays it and disables the Edit command. This isolates it within OLE verbs and embedded-object activation and provides a regression test for the stated correction.
Difference from related HRESULTs
OLEOBJ_E_INVALIDVERB means verbs exist but the requested one is invalid; it means no verb is available. Keep those outcomes separate in exception mappings, telemetry dimensions, user messages, and automated retry policy.
Developer and administrator guidance
Build commands from current OLEVERB enumeration, preserve signed verb identifiers, and pass the correct client site, parent window, message, and rectangle to DoVerb. Regression coverage for it should include objects with no verbs, negative standard verbs, private verbs, state-dependent availability, headless activation, server restart, and UI deactivation after failure.
Operational repair for it must target the evidence-backed owner: confirm that the expected object server is installed and that the same CLSID exposes the verb in another supported container before repairing registration. Retain before-and-after traces for it so the change can be attributed and reversed.
References
- Microsoft: generic COM error codes
- Microsoft: HRESULT values
- Microsoft: IOleObject::EnumVerbs
- Microsoft: IOleObject::DoVerb
- Microsoft: OLEVERB structure
Looking for a different code? Search another status or error code.