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 に設定されているときに、マーシャリング サービスがマーシャラを作成するために呼び出します。 |