Что означает код HRESULT 0x80020007 (DISP_E_NONAMEDARGS)?

 
Предыдущий Следующий
DISP_E_UNKNOWNNAME DISP_E_BADVARTYPE

DISP_E_NONAMEDARGS

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

DISP_E_NONAMEDARGS (0x80020007) — текущий Automation-член не принимает именованные аргументы в использованной форме вызова.

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

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

  • Проверьте cNamedArgs и массив named DISPIDs.
  • Сверьте сигнатуру/type information: нужный параметр может поддерживаться только позиционно.
  • Для property put не спутайте обязательный DISPID_PROPERTYPUT с произвольным именованным параметром.

Что делать

Передайте аргументы в поддерживаемой позиционной форме либо используйте контракт, который действительно объявляет named arguments.

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


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