Share via


Marshalling Support in RTC API Version 1.3

In previous versions of the RTC Client API (version 1.2 and earlier), the RTCClient object could not be used across thread or apartment boundaries. RTC Client API version 1.3 is now supported across threads and apartments.

RTC Client API version 1.3 supports the following:

  • Multiple single-threaded apartment threads (threads that call CoInitializeEx with COINIT_APARTMENTTHREADED specified in the dwCoInit parameter) can use the same RTCClient object by passing RTC interface pointers between threads using CoMarshalInterThreadInterfaceInStream (for a thread to pass the interface pointer) and CoGetInterfaceAndReleaseStream (for a thread to get the interface pointer passed from another thread). The receiving thread can then use the interface pointer (returned from CoGetInterfaceAndReleaseStream) to call methods on the RTCClient object.
  • Multithreaded apartment threads (threads that call CoInitializeEx with COINIT_MULTITHREADED specified in the dwCoInit parameter) can use the same RTCClient object by passing interface pointers directly between MTA threads. The receiving thread can use those interface pointers to call methods on the RTCClient object.