Что означает код HRESULT 0x80020011 (DISP_E_NOTACOLLECTION)?

 
Предыдущий Следующий
DISP_E_BADCALLEE DISP_E_DIVBYZERO

DISP_E_NOTACOLLECTION

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

DISP_E_NOTACOLLECTION (0x80020011) — код пытается обращаться к Automation-объекту как к коллекции, но объект не поддерживает требуемое перечисление или индексированный default member.

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

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

  • Проверьте наличие DISPID_NEWENUM и/или индексируемого default property у конкретного класса.
  • Убедитесь, что wrapper не принял обычный объект за collection только по внешнему типу VARIANT.
  • Сохраните class identity и DISPID операции, которая ожидала коллекцию.

Что делать

Используйте опубликованный интерфейс объекта; не эмулируйте collection semantics, если COM-класс их не предоставляет.

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


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