The .NET runtime supports bidirectional
interop with unmanaged code via COM, COM+, and native Win32 API
calls. The FCL provides a set of classes and attributes that support
this, including precise control of managed object lifetime, and the
option of creating user-defined custom marshallers to handle specific
interop situations (see Chapter 17 and Chapter 18).
For more information, see the following namespaces:
System.Runtime.InteropServices
System.Runtime.InteropServices.CustomMarshalers
System.Runtime.InteropServices.Expando
An important related type in another namespace is
System.Buffer.