Site icon EfmSoft

What does HRESULT 0x80029C83 (TYPE_E_INCONSISTENTPROPFUNCS) mean?

 
Previous Next
TYPE_E_CANTLOADLIBRARY TYPE_E_CIRCULARTYPE

TYPE_E_INCONSISTENTPROPFUNCS

Property accessors have inconsistent type-library signatures

TYPE_E_INCONSISTENTPROPFUNCS is HRESULT 2147654787 (0x80029C83) from winerror.h. The documented description is “Inconsistent property functions.” The result belongs to finalization of property get, put, and putref functions in type metadata. The important boundary is not merely failure but which object and state transition established: the accessors assigned to one property disagree on type, parameter order, flags, or member identity.

TYPE_E_INCONSISTENTPROPFUNCS means that the accessors assigned to one property disagree on type, parameter order, flags, or member identity.

Where the result appears

  • This result can surface in a type-library compiler, importer, registration step, proxy generator, or Automation metadata consumer.
  • Map the failure to one concrete operation among LoadTypeLib, RegisterTypeLib, ITypeInfo, ICreateTypeInfo, FUNCDESC, TYPEDESC, and imported LIBID versions.
  • Preserve LIBID, type-library version, LCID, SYSKIND, TYPEKIND, GUID, MEMBERID, HREFTYPE, and the producer toolchain before releasing or replacing the object that returned this result.

An incident record must distinguish caller, runtime, provider, and backing resource while testing whether the accessors assigned to one property disagree on type, parameter order, flags, or member identity.

Typical causes and interpretation

The immediate contract boundary is specific: the accessors assigned to one property disagree on type, parameter order, flags, or member identity. Common cause branches include the following:

  • A propget return type differs from the propput value type.
  • Propput and propputref use incompatible object semantics.
  • Generated accessors receive different DISPIDs or optional-index parameters.

Confirm the cause branch that explains why the accessors assigned to one property disagree on type, parameter order, flags, or member identity by using call arguments, object state, metadata, device information, or provider traces.

Correct handling and recovery

The primary recovery is to make every accessor share one published property contract and regenerate dependent wrappers after preserving compatibility IDs. The failure report should capture the relevant state during finalization of property get, put, and putref functions in type metadata so it is clear why the accessors assigned to one property disagree on type, parameter order, flags, or member identity.

Retry this result only when evidence shows the state behind “the accessors assigned to one property disagree on type, parameter order, flags, or member identity” can change and the operation is repeatable.

Practical scenario

A COM server exposes Item(index) as BSTR in the getter but accepts VARIANT in the setter, and the type-library compiler refuses to combine them as one property.

Difference from related HRESULTs

TYPE_E_AMBIGUOUSNAME concerns name resolution; it is about incompatible accessor definitions already associated with one property

Developer and administrator guidance

Use a minimal IDL or metadata fixture that reproduces the exact graph, then validate both 32-bit and 64-bit generated artifacts.

Administrators should repair the component owning finalization of property get, put, and putref functions in type metadata as a versioned unit instead of copying arbitrary DLLs.

References


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

Exit mobile version