| Предыдущий | Следующий |
| RPC_E_INVALID_DATAPACKET | RPC_E_CLIENT_CANTMARSHAL_DATA |
RPC_E_CANTTRANSMIT_CALL
Что означает RPC_E_CANTTRANSMIT_CALL
RPC_E_CANTTRANSMIT_CALL (0X8001000A) означает, что COM не смогла передать вызов: очередь сообщений оставалась заполненной и не освободилась даже после уступки времени выполнения. Это прежде всего проблема dispatch/backpressure, а не общий отказ marshaling.
Что проверить
- Снимите состояние STA/UI-потока, который должен dispatch-ить сообщения: длинный синхронный handler, modal loop или рекурсивный вызов могут не давать очереди разгружаться.
- Измерьте глубину/скорость поступления вызовов и время обработки одного сообщения. Если ошибка исчезает при снижении потока запросов, ищите saturation, а не регистрацию интерфейса.
- Проверьте reentrancy и вложенные межапартаментные вызовы: длительная блокировка owning STA может сделать корректный proxy фактически недоступным для новых calls.
Контрольный тест — тот же interface/method с прежними параметрами после устранения блокировки message pump. Если вызов передаётся без изменения proxy/stub и typelib, причина была именно в очереди.
Ссылки по этому результату
Нужно найти другой код? Найти другой код состояния или ошибки.
