| Предыдущий | Следующий |
| DISP_E_PARAMNOTOPTIONAL | DISP_E_NOTACOLLECTION |
DISP_E_BADCALLEE
Что означает DISP_E_BADCALLEE
DISP_E_BADCALLEE (0x80020010) — объект, получивший Automation-вызов, нарушил ожидаемый контракт вызова или вернул некорректные данные.
COM Automation позволяет вызывать свойства и методы через IDispatch без жёсткой привязки к vtable-интерфейсу: имя преобразуется в DISPID, а Invoke получает аргументы как VARIANT/DISPPARAMS. Поэтому для DISP_E_* особенно важны конкретный член, DISPID и фактические типы аргументов.
Что проверить
- Сохраните DISPID, flags
Invoke,DISPPARAMS,EXCEPINFOиargErrна первом возврате. - Определите конкретный COM-server/объект, который вернул HRESULT; ошибка относится к callee, а не автоматически к вызывающему приложению.
- Сравните версию type library и реализацию Automation-объекта с исправной системой.
Что делать
Исправлять нужно реализацию вызываемого объекта или несовместимость его контракта. Простая перестановка аргументов у caller-а без доказательства причины может только изменить симптом.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.