Что означает код HRESULT 0x800288C6 (TYPE_E_DUPLICATEID)?

 
Предыдущий Следующий
TYPE_E_SIZETOOBIG TYPE_E_INVALIDID

TYPE_E_DUPLICATEID

Что означает результат

При результате TYPE_E_DUPLICATEID (0X800288C6) локализуйте операцию внутри COM Automation type library and ITypeInfo metadata resolution. Практическая граница — дублирующий ID; поздняя обёртка может скрыть исходный command, policy или lifecycle-state.

Type compiler, importer, proxy generator и runtime ITypeInfo consumer могут возвращать тот же TYPE_E_* на разных boundaries, поэтому producer/toolchain version входит в evidence.

Конкретные признаки из исходного EN-описания

  • the result is HRESULT 2147649734 ( 0x800288C6 ) from winerror.h.
  • capture duplicate MEMBERID or DISPID; base-interface chain; overriding member; imported library versions; generator allocation scheme.
  • Two generated base interfaces both assign DISPID 7; the ID allocator reserves inherited ranges before adding derived members.
  • TYPE_E_INVALIDID concerns an incorrectly formed inheritance-depth ID; it specifically detects reuse within the hierarchy.

Что сохранить до retry

  • LIBID/version/LCID/SYSKIND и TYPEKIND.
  • GUID/MEMBERID/HREFTYPE либо FUNCDESC/TYPEDESC, проверяемые операцией.
  • точный LoadTypeLib/ITypeInfo/registration boundary и первый HRESULT.

После изменения IDL/type library проверяйте согласованность 32/64-bit artifacts и imported versions, а не копируйте отдельную DLL как универсальное исправление.

Проверка причинной границы

Сравните failing и working trace той же операции. Поле или state, соответствующий «дублирующий ID», должен быть единственным существенным отличием.

Проверьте metadata graph для условия «дублирующий ID»: registration, module kind, member lookup, TYPEKIND и imported library version дают разные TYPE_E_* даже в одном toolchain.

Исправление и повтор

Исправьте metadata/type-library condition «дублирующий ID», пересоберите или зарегистрируйте согласованный versioned artifact и повторите минимальный LoadTypeLib/ITypeInfo scenario.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.