What does HRESULT 0x80010004 (RPC_E_CANTCALLOUT_INASYNCCALL) mean?

 
Previous Next
RPC_E_CANTPOST_INSENDCALL RPC_E_CANTCALLOUT_INEXTERNALCALL

RPC_E_CANTCALLOUT_INASYNCCALL

RPC_E_CANTCALLOUT_INASYNCCALL is returned when code handling an asynchronous COM call attempts to make another outgoing COM call. COM prohibits that reentrant call pattern while asynchronous dispatch is in progress.

How to correct the call flow

  • Return from the asynchronous callback before making the dependent COM call.
  • Queue follow-up work to a normal execution path instead of calling another COM object from the callback.
  • Keep callback code short and avoid synchronous operations that can reenter the COM apartment.

The fix is architectural: defer the secondary call rather than trying to suppress the HRESULT.

Microsoft: COM documentation


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