| Предыдущий | Следующий |
| 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 и последующим доступом.
Что делать
Используйте индекс или ключ, допустимый для того же состояния коллекции; при конкурентном изменении повторно получите границы перед доступом.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
