How does managed .NET code use an unmanaged COM object?
A.
The CLR creates a runtime callable wrapper (RCW) that acts as a proxy for the unmanaged object.
B.
The CLR uses events to create asynchronous calls to unmanaged code.
C.
The CLR runs managed code and unmanaged code in separate threads.
D.
The CLR uses shared assemblies to communicate between managed code and unmanaged code.