This class defines how parameters
or fields should be
marshaled in function calls to unmanaged code. By default, the CLR
applies certain format conversions automatically during this
marshaling (for example, it might change a
System.String object to an unmanaged BSTR). Use
this class to override this default behavior.
To create an instance of this class, use one of the static methods to
define the unmanaged type you want. Typically, you will use
DefineUnmanagedMarshal( ) for this purpose and
specify the unmanaged type using the
System.Runtime.InteropServices.UnmanagedType
enumeration. Alternatively, use DefineByValTStr( )
to specify marshaling to a string in a fixed array buffer, and
specify the other methods for various types of unmanaged arrays.
These static methods all return an
UnmanagedMarshal object, with its read-only
properties set accordingly. Lastly, associate the
UnmanagedMarshal with the appropriate type using
the SetMarshal( ) method for the
ParameterBuilder,
MethodBuilder, or FieldBuilder
class.
public sealed class UnmanagedMarshal {
// Public Instance Properties
public UnmanagedType BaseType{get; }
public int ElementCount{get; }
public UnmanagedType GetUnmanagedType{get; }
public Guid IIDGuid{get; }
// Public Static Methods
public static UnmanagedMarshal DefineByValArray(int elemCount);
public static UnmanagedMarshal DefineByValTStr(int elemCount);
public static UnmanagedMarshal DefineLPArray(System.Runtime.InteropServices.UnmanagedType elemType);
public static UnmanagedMarshal DefineSafeArray(System.Runtime.InteropServices.UnmanagedType elemType);
public static UnmanagedMarshal DefineUnmanagedMarshal
System.Runtime.InteropServices.UnmanagedType unmanagedType);
}