| Предыдущий | Следующий |
| TYPE_E_TYPEMISMATCH | TYPE_E_IOERROR |
TYPE_E_OUTOFBOUNDS
Объект и состояние
Этот HRESULT 0X80028CA1 фиксирует условие выход за границы в подсистеме COM Automation type library and ITypeInfo metadata resolution. Для корректного сравнения нужны один и тот же API, сопоставимый object state и первый возврат до recovery.
Type compiler, importer, proxy generator и runtime ITypeInfo consumer могут возвращать тот же TYPE_E_* на разных boundaries, поэтому producer/toolchain version входит в evidence.
Конкретные признаки из исходного EN-описания
the result is HRESULT 2147650721 ( 0x80028CA1 ) from winerror.h.
A FUNCDESC count does not match the allocated parameter array.
An IDL generator removes an optional parameter but leaves cParams and the parameter table out of sync, causing final type-info layout to fail.
An importer reads a stale index after the member list changed.
Минимальный trace
- 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 как универсальное исправление.
Причинная граница
Сопоставьте producer с «выход за границы». Если method, identity объекта или generation отличаются, это уже другой эксперимент, даже когда верхний слой показывает тот же общий текст.
Проверьте metadata graph для условия «выход за границы»: registration, module kind, member lookup, TYPEKIND и imported library version дают разные TYPE_E_* даже в одном toolchain.
Подтверждение результата
Исправьте metadata/type-library condition «выход за границы», пересоберите или зарегистрируйте согласованный versioned artifact и повторите минимальный LoadTypeLib/ITypeInfo scenario.
Технические ссылки
- Microsoft: COM error codes for TYPE_E and OLE.
- Microsoft: LoadTypeLib.
- Microsoft: CreateTypeLib2.
- Microsoft: ITypeInfo.
Нужно найти другой код? Найти другой код состояния или ошибки.