O'Reilly logo

C# in a Nutshell by Peter Drayton, Ted Neward, Ben Albahari

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Name

UnmanagedMarshal

Synopsis

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 a 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 field UnmanagedType BaseType{get; } 
   public field int ElementCount{get; } 
   public field UnmanagedType GetUnmanagedType{get; } 
   public field Guid IIDGuid{get; } 
// Public Static Methods
   public static method UnmanagedMarshal DefineByValArray(
        int elemCount);  
   public static method UnmanagedMarshal DefineByValTStr(
        int elemCount);  
   public static method UnmanagedMarshal DefineLPArray ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required