Platform Invoke is used to call Win32 functions from managed code.
See
PInvoke.net/[
^]
For calling managed code from unmanaged code one approach is to use COM Interop where COM interfaces are exported from the managed code.
See
COM Interop Part 2[
^]
So yes, you are right in your assumptions.