Что означает код HRESULT 0x80010005 (RPC_E_CANTCALLOUT_INEXTERNALCALL)?

 
Предыдущий Следующий
RPC_E_CANTCALLOUT_INASYNCCALL RPC_E_CONNECTION_TERMINATED

RPC_E_CANTCALLOUT_INEXTERNALCALL

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

RPC_E_CANTCALLOUT_INEXTERNALCALL означает, что текущий COM callback не допускает новый исходящий вызов. Часто это происходит внутри методов IMessageFilter или другого обработчика внешнего вызова.

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

  • Сохраните стек и определите callback, внутри которого возник HRESULT.
  • Проверьте helper/UI-код на скрытые обращения к COM automation.
  • Не выполняйте вызов сервера непосредственно из message-filter decision.
  • Перенесите работу в очередь, которая выполнится после возврата из callback.

Исправление заключается в изменении порядка выполнения, а не в повторе того же callout из запрещённого контекста. После переноса убедитесь, что вызов выполняется уже вне внешнего callback.

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


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