What does HRESULT 0x80040180 (OLEOBJ_E_NOVERBS) mean?

 
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). Windows reports “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.

API stage

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.

Verification steps

  1. Identify the exact object, method, and lifecycle phase involved in enumerating commands or choosing a default activation action for an embedded object.
  2. Call EnumVerbs and preserve its exact result.
  3. Record object CLSID, server version, and whether cached data is still displayable.
  4. Avoid inferring verbs from another version or from file associations.

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.

Recovery conditions

Correction. present the object as noninteractive, use a class-specific command, or repair the server only when its contract requires verbs. Retry condition. 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.

Difference from related HRESULTs

OLEOBJ_E_INVALIDVERB means verbs exist but the requested one is invalid; it means no verb is available.

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 should include objects with no verbs, negative standard verbs, private verbs, state-dependent availability, headless activation, server restart, and UI deactivation after failure.

Confirm that the expected object server is installed and that the same CLSID exposes the verb in another supported container before repairing registration.

References


Looking for a different code? Search another status or error code.