Implementing the ICustomMarshaler Interface
To use a custom marshaler, you must apply the MarshalAsAttribute attribute to the parameter or field being marshaled. The attribute identifies the custom marshaler that activates the appropriate wrapper.
The custom marshaler implements the System.Runtime.InteropServices.ICustomMarshaler interface to provide the appropriate wrappers to the runtime, creating the custom marshaler the first time an argument needs to be marshaled. It calls the ICustomMarshaler.MarshalNativeToManaged and ICustomMarshaler.MarshalManagedToNative methods on the custom marshaler to activate the correct wrapper to handle the call. The following table describes each method exposed by the ICustomMarshaler interface.
Interface method |
Description |
---|---|
Returns a custom runtime callable wrapper that can marshal the unmanaged interface passed as an argument. The marshaler should return an instance of the custom runtime callable wrapper for that type. |
|
Returns a custom COM callable wrapper that can marshal the managed interface passed as an argument. The marshaler should return an instance of the custom COM callable wrapper for that type. |
|
Provides an opportunity for the custom marshaler to perform any necessary cleanup of the wrapper returned by the MarshalManagedToNative method. |
|
Provides an opportunity for the custom marshaler to perform any necessary cleanup of the wrapper returned by the MarshalManagedToNative method. |
|
Returns the size of the native data to be marshaled. |
See Also
Concepts
Change History
Date |
History |
Reason |
---|---|---|
July 2009 |
Added topic links |
Information enhancement. |