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 ...
Get C# in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.