| Предыдущий | Следующий |
| TYPE_E_DUPLICATEID | TYPE_E_TYPEMISMATCH |
TYPE_E_INVALIDID
Контракт подсистемы
При результате TYPE_E_INVALIDID (0X800288CF) локализуйте операцию внутри 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 2147649743 ( 0x800288CF ) from winerror.h.
AllStat describes it as “Incorrect inheritance depth in standard OLE hmember.” The result belongs to type-library validation of inherited MEMBERID or DISPID values.
A generator encoded an inherited member with the wrong depth.
A hand-authored type description reused a reserved identifier form.
Поля для корреляции
- 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 как универсальное исправление.
Как проверить гипотезу
Проверьте condition «некорректный ID» на том же API и object generation. Изменение одного prerequisite должно убрать этот HRESULT или сдвинуть первый отказ к другой конкретной границе.
Проверьте 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.
Технические ссылки
- Microsoft: COM error codes for TYPE_E and OLE.
- Microsoft: LoadTypeLib.
- Microsoft: CreateTypeLib2.
- Microsoft: ITypeInfo.
Нужно найти другой код? Найти другой код состояния или ошибки.
