Что означает код HRESULT 0x80020003 (DISP_E_MEMBERNOTFOUND)?

 
Предыдущий Следующий
DISP_E_UNKNOWNINTERFACE DISP_E_PARAMNOTFOUND

DISP_E_MEMBERNOTFOUND

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

DISP_E_MEMBERNOTFOUND (0x80020003) — объект не имеет члена, соответствующего указанному DISPID или выбранной форме Invoke.

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

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

  • Запишите DISPID, flags Invoke и версию объекта/type library.
  • Если DISPID был закеширован, получите его заново через GetIDsOfNames после смены версии/реализации объекта.
  • Проверьте, поддерживает ли член именно property get, property put или method форму, которую вызывает клиент.

Что делать

Используйте существующий член и корректную форму Invoke; не считайте DISPID стабильным между несвязанными классами или несовместимыми версиями.

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


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