Site icon EfmSoft

What does HRESULT 0x80020007 (DISP_E_NONAMEDARGS) mean?

 
Previous Next
DISP_E_UNKNOWNNAME DISP_E_BADVARTYPE

DISP_E_NONAMEDARGS

Automation target does not accept named arguments

DISP_E_NONAMEDARGS is HRESULT 2147614727 (0x80020007) from winerror.h. The documented description is “No named arguments.” The value must be interpreted at IDispatch::Invoke when DISPPARAMS supplies named DISPIDs.

The invoked member supports only positional binding for the current call form. When this result crosses a language or process boundary, preserve its original numeric form before projections replace it with a broad exception class.

Where the result appears

  • This result is returned while Automation binds or executes IDispatch::Invoke when DISPPARAMS supplies named DISPIDs.

Triage of this result starts by locating the exact owner of the failing state, including object identity, apartment, package, and deployment generation.

Typical causes and interpretation

Common cause categories are: the caller names ordinary positional parameters; a method lacks named-argument metadata; a property form is invoked with the wrong flags. Do not treat the cause list as a checklist of simultaneous failures; use traces and postconditions to select the matching branch.

Key distinction: the invoked member supports only positional binding for the current call form.

Evidence to preserve

  • Record it with the object CLSID or ProgID, interface identity, member DISPID, dispatch flags, and type-library version.
  • Capture member DISPID; cNamedArgs; named DISPIDs; invocation flags; type-info parameter attributes.

When recording it, retain structural metadata and redact content-bearing arguments, authentication material, and personal data.

Correct handling and recovery

The appropriate recovery is to rebuild the call with positional arguments in reverse order or use the exact named arguments documented for the property operation. A retry policy needs a bounded attempt count, a state refresh step, and a rule for reconciling work that may already have completed.

Cleanup following it must be generation-aware: do not destroy shared state or outputs owned by an earlier successful operation.

Practical scenario

A generic invoker names every argument, but the legacy object accepts only positional values; it switches binding mode for that member.

Coverage should include the exact failure, a corrected success case, and the closest related HRESULT so classification remains stable.

Difference from related HRESULTs

DISP_E_PARAMNOTFOUND means a particular named argument cannot be found; it means named binding is not supported at all.

Tests and telemetry should retain the producing component and operation so future wrappers do not flatten this result into an ambiguous generic exception.

References


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

Exit mobile version