Что означает код HRESULT 0x8001010E (RPC_E_WRONG_THREAD)?

 
Предыдущий Следующий
RPC_E_CANTCALLOUT_ININPUTSYNCCALL RPC_E_THREAD_NOT_INIT

RPC_E_WRONG_THREAD

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

RPC_E_WRONG_THREAD означает нарушение COM apartment ownership: interface pointer вызывается не из того thread/apartment, для которого он был получен или marshaled.

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

  • Сохраните thread/apartment получения pointer и thread/apartment фактического вызова.
  • Для STA верните operation в owning apartment либо передайте interface стандартным COM marshaling.
  • Для передачи между STA/MTA используйте GIT или другой поддерживаемый механизм, а не копирование raw pointer.
  • Проверьте callbacks/worker threads, где pointer мог пережить apartment teardown.

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

Исправление подтверждается вызовом interface из owning apartment либо через штатно marshaled proxy: прежний сценарий проходит без RPC_E_WRONG_THREAD и без передачи raw interface pointer между apartments.

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


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