| Previous | Next |
| TYPE_E_DUPLICATEID | TYPE_E_TYPEMISMATCH |
TYPE_E_INVALIDID
Invalid inherited member identifier in type metadata
TYPE_E_INVALIDID is HRESULT 2147649743 (0x800288CF) from winerror.h. The documented description is “Incorrect inheritance depth in standard OLE hmember.” The result belongs to type-library validation of inherited MEMBERID or DISPID values. The important boundary is not merely failure but which object and state transition established: the encoded identifier does not describe a valid inheritance depth or member position.
TYPE_E_INVALIDID means that the encoded identifier does not describe a valid inheritance depth or member position.
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 encoded identifier does not describe a valid inheritance depth or member position.
Typical causes and interpretation
The immediate contract boundary is specific: the encoded identifier does not describe a valid inheritance depth or member position. Common cause branches include the following:
- A generator encoded an inherited member with the wrong depth.
- A hand-authored type description reused a reserved identifier form.
- A damaged or mismatched type library changed the inheritance graph.
Confirm the cause branch that explains why the encoded identifier does not describe a valid inheritance depth or member position by using call arguments, object state, metadata, device information, or provider traces.
Correct handling and recovery
The primary recovery is to regenerate the type information from a stable interface hierarchy and preserve published member identifiers. The failure report should capture the relevant state during type-library validation of inherited MEMBERID or DISPID values so it is clear why the encoded identifier does not describe a valid inheritance depth or member position.
Retry this result only when evidence shows the state behind “the encoded identifier does not describe a valid inheritance depth or member position” can change and the operation is repeatable.
Practical scenario
A proxy generator imports a base interface through two different metadata versions and emits an hmember whose inheritance depth no longer matches the deployed type library.
Difference from related HRESULTs
TYPE_E_DUPLICATEID reports reuse of a valid identifier, whereas it says the identifier encoding itself is invalid
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 type-library validation of inherited MEMBERID or DISPID values as a versioned unit instead of copying arbitrary DLLs.
References
Looking for a different code? Search another status or error code.