Что означает код HRESULT 0x8002000B (DISP_E_BADINDEX)?

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

DISP_E_BADINDEX

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

DISP_E_BADINDEX (0x8002000B) — запрошенный индекс не обозначает существующий элемент в текущем состоянии Automation-коллекции или индексируемого свойства.

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

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

  • Запишите значение индекса, размер/границы коллекции и DISPID индексируемого свойства.
  • Проверьте, от какого значения начинается индексация конкретного объекта; Automation-коллекции не обязаны иметь одинаковую модель индексов.
  • Исключите изменение коллекции между получением count/key и последующим доступом.

Что делать

Используйте индекс или ключ, допустимый для того же состояния коллекции; при конкурентном изменении повторно получите границы перед доступом.

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


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