What does HRESULT 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL) mean?

 
Previous Next
RPC_E_INVALID_CALLDATA RPC_E_WRONG_THREAD

RPC_E_CANTCALLOUT_ININPUTSYNCCALL

Outgoing COM call is forbidden during an input-synchronous call

RPC_E_CANTCALLOUT_ININPUTSYNCCALL is HRESULT 2147549453 (0x8001010D) from winerror.h. The documented description is “An outgoing call cannot be made since the application is dispatching an input-synchronous call.” The relevant context is the COM/RPC call control, message filtering, apartment routing, marshaling, security negotiation, or remote object lifetime.

Where it is encountered

  • Cross-apartment or cross-process COM method invocation and activation.
  • STA message filtering, reentrancy, call cancellation, timeout, or retry handling.
  • DCOM security initialization, proxy/stub marshaling, OBJREF processing, and server object lifetime.

The immediate focus is reentrant call control while the current thread dispatches an input-synchronous message that must complete before outbound COM work.

What to verify

Verify that the incoming call category and callback stack prove that the thread is inside input-synchronous dispatch.

Difference from nearby HRESULTs

It is tied to input-synchronous dispatch; RO_E_BLOCKED_CROSS_ASTA_CALL blocks a broader deadlock-prone apartment chain.

Correct handling and recovery

Post or queue the outbound work until the current call returns. Do not block or make a synchronous cross-apartment call from the handler.

Practical scenario

A window procedure invoked by COM attempts to call another automation server. The handler posts a private message and performs the call after returning.

References


Looking for a different code? Search another status or error code.