Что означает код HRESULT 0x80010106 (RPC_E_CHANGED_MODE)?

 
Предыдущий Следующий
RPC_E_SERVERFAULT RPC_E_INVALIDMETHOD

RPC_E_CHANGED_MODE

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

RPC_E_CHANGED_MODE означает, что текущий поток уже инициализирован COM с моделью конкурентности, несовместимой с новым запросом. Поток нельзя на ходу переключить между STA и MTA, пока предыдущая COM-инициализация остаётся активной.

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

Найдите первый успешный CoInitializeEx или OleInitialize на этом потоке и сравните его модель с последующим вызовом. Учтите, что OleInitialize выбирает STA. Также проверьте библиотеки, которые могут инициализировать COM внутри себя до вашего кода.

Не исправляйте ошибку повторным вызовом с другим флагом наугад. Определите apartment-модель потока архитектурно и соблюдайте баланс каждого успешного CoInitializeEx/CoUninitialize. Если компонент требует другую модель, перенесите его работу на подходящий поток.

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


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