次の方法で共有


ICustomMarshaler インターフェイスの実装

更新 : 2007 年 11 月

カスタム マーシャラを使用するには、マーシャリングするパラメータまたはフィールドに MarshalAsAttribute 属性を適用する必要があります。この属性で、適切なラッパーをアクティブにするカスタム マーシャラを識別します。

カスタム マーシャラは、ICustomMarshaler Interface インターフェイスを実装して、ランタイムに適切なラッパーを提供します。ランタイムは、引数のマーシャリングが最初に必要になったときに、カスタム マーシャラを作成します。カスタム マーシャラは、カスタム マーシャラの MarshalNativeToManaged メソッドおよび MarshalManagedToNative メソッドを呼び出して、その呼び出しを処理する適切なラッパーをアクティブにします。ICustomMarshaler インターフェイスによって公開される各メソッドを説明する表を次に示します。

インターフェイス メソッド

説明

MarshalNativeToManaged

引数として渡されたアンマネージ インターフェイスをマーシャリングできるカスタムのランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) を返します。マーシャラは、その型に対応するカスタム RCW のインスタンスを返します。

MarshalManagedToNative

引数として渡されたマネージ インターフェイスをマーシャリングできるカスタムの COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) を返します。マーシャラは、その型に対応するカスタム CCW のインスタンスを返します。

CleanUpNativeData

MarshalManagedToNative メソッドによって返されたラッパーのクリーンアップが必要な場合に、クリーンアップを実行する機会をカスタム マーシャラに提供します。

CleanUpManagedData

MarshalNativeToManaged メソッドによって返されたラッパーのクリーンアップが必要な場合に、クリーンアップを実行する機会をカスタム マーシャラに提供します。

GetInstance

カスタム マーシャラのインスタンスを取得します。この静的メソッドは、カスタム マーシャラの新しいインスタンスを毎回作成するか、またはカスタム マーシャラの状態が不明の場合は常に同じインスタンスを使用します。このメソッドは、パラメータまたはフィールドが UnmanagedType.CustomMarshaler に設定されているときに、マーシャリング サービスがマーシャラを作成するために呼び出します。

参照

概念

マーシャリング型の定義

代替マーシャラの使用

その他の技術情報

カスタム マーシャリング