| 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. AllStat describes it as “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.
The decisive meaning of this result is that the accessors assigned to one property disagree on type, parameter order, flags, or member identity. The severity bit does not decide handling; the controlling fact is that the accessors assigned to one property disagree on type, parameter order, flags, or member identity. Interpret it at the native boundary before a wrapper hides the condition 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 for it 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 boundary
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 result failure report should expose enough finalization of property get, put, and putref functions in type metadata state to understand why the accessors assigned to one property disagree on type, parameter order, flags, or member identity without a production debugger.
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. Reconcile persistent, remote, device, or ownership state before repeating it.
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. Record the decisive state for it and verify recovery on a fresh object or request generation.
Difference from related HRESULTs
TYPE_E_AMBIGUOUSNAME concerns name resolution; it is about incompatible accessor definitions already associated with one property Tests and telemetry should preserve that boundary for it.
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. 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. Repair for it should target only the evidence-backed component, provider, document, device, or configuration.
References
- Microsoft: COM error codes for TYPE_E and OLE
- Microsoft: LoadTypeLib
- Microsoft: CreateTypeLib2
- Microsoft: ITypeInfo
Looking for a different code? Search another status or error code.