Что означает код HRESULT 0x80020009 (DISP_E_EXCEPTION)?

 
Предыдущий Следующий
DISP_E_BADVARTYPE DISP_E_OVERFLOW

DISP_E_EXCEPTION

Что означает DISP_E_EXCEPTION

DISP_E_EXCEPTION (0x80020009) — IDispatch::Invoke дошёл до вызываемого метода/свойства, а сам компонент сообщил прикладное исключение через EXCEPINFO.

COM Automation позволяет вызывать свойства и методы через IDispatch без жёсткой привязки к vtable-интерфейсу: имя преобразуется в DISPID, а Invoke получает аргументы как VARIANT/DISPPARAMS. Поэтому для DISP_E_* особенно важны конкретный член, DISPID и фактические типы аргументов.

Что проверить

  • Скопируйте EXCEPINFO сразу после Invoke: source, description, help context и scode могут содержать более точную причину.
  • Сохраните DISPID и аргументы, но не логируйте секреты из VARIANT.
  • Не заменяйте этот HRESULT общим «ошибка COM», пока не разобрана информация, которую вернул сам server.

Что делать

Исправление определяется содержимым EXCEPINFO и контрактом конкретного Automation-члена; код DISP_E_EXCEPTION лишь сообщает способ передачи этой ошибки.

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


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