Что означает код HRESULT 0x80020004 (DISP_E_PARAMNOTFOUND)?

 
Предыдущий Следующий
DISP_E_MEMBERNOTFOUND DISP_E_TYPEMISMATCH

DISP_E_PARAMNOTFOUND

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

DISP_E_PARAMNOTFOUND (0x80020004) — Параметр не найден.

Код 0x80020004 относится не ко всему компоненту «COM Automation», а к операции в области «IDispatch, сопоставление имён, аргументы VARIANT и локаль». Сообщение «параметр не найден» позволяет начать с темы «paramnotfound».

Что проверить и как подтвердить исправление

В первую очередь проверьте идентификатор, область поиска и жизненный цикл отсутствующего объекта. Для 0x80020004 в сценарии «параметр не найден» проверьте идентификатор, область поиска и поколение объекта; имя может быть верным, но относиться к другому контейнеру или уже удалённому состоянию.

Чтобы локализовать 0x80020004, соберите DISPID, имя члена, LCID, число и типы аргументов, DISPPARAMS, EXCEPINFO и argErr; отдельно запишите HRESULT, IDispatch::Invoke, LCID, EXCEPINFO, VARIANT. Затем для 0x80020004 сравните исправный и неуспешный запуск в части «paramnotfound», меняя одно условие за раз.

Исправляя 0x80020004, меняйте только подтверждённую причину: приведите число, порядок и типы аргументов к описанию вызываемого члена; сохраните EXCEPINFO до следующего COM-вызова. Результат 0x80020004 с описанием «параметр не найден» должен исчезнуть на исходных данных без обхода штатной проверки.

Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0x80020004 и без обхода штатных проверок.

Документация для результата 0x80020004: VariantClear · HRESULT values · IDispatch::GetIDsOfNames.


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