標準ラッパーのカスタマイズ

このトピックでは、標準のランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrappers) および COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) をカスタマイズするために使用するプロセスを説明します。

ランタイム呼び出し可能ラッパー

.NET のクライアントが COM オブジェクトをアクティブにすると、ランタイムは、ランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) のインスタンスを生成してその COM 型をラップします。次の図に示すように、ランタイムは、インポートされた COM タイプ ライブラリから取得したメタデータを使用して RCW を生成します。ラッパーは、相互運用マーシャリング サービスによって設定された規則に基づいてデータをマーシャリングします。

RCW の生成とメソッドの呼び出し

標準ラッパーのカスタマイズ

RCW は 2 とおりの方法でカスタマイズできます。インターフェイス定義言語 (IDL: Interface Definition Language) のソース コードを変更できる場合は、タイプ ライブラリ ファイル (TLB) の属性を適用し、タイプ ライブラリをインポートできます。もう 1 つの方法は、インポートした型に相互運用機能専用の属性を適用し、新しいアセンブリを生成する方法です。標準の RCW のカスタマイズのサポートは、相互運用機能専用の属性によって制限されます。手順については、「方法 : ランタイム呼び出し可能ラッパーをカスタマイズする」を参照してください。

COM 呼び出し可能ラッパー

COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) は、COM に対して .NET Framework のオブジェクトを公開します。マネージ プロジェクトをアセンブリ DLL にコンパイルすると、アセンブリ内のそれぞれの型を記述するのに必要なメタデータが自動的に作成されます。COM クライアントがマネージ オブジェクトをアクティブにするたびに、ランタイムは、このメタデータを使用して CCW を作成します。

CCW をカスタマイズするには、次の図に示すように、マネージ ソース コードに相互運用機能専用の属性を適用し、そのソースをアセンブリにコンパイルします。この例では、Tlbexp.exe によってマネージ型が COM に変換されます。

CCW の生成とメソッドの呼び出し

標準ラッパーのカスタマイズ

コードに属性を適用することにより、相互運用マーシャリング サービスの範囲内でインターフェイスの動作とデータ マーシャリングの動作を変更できます。たとえば、引数としてメソッドに渡されるデータの書式を制御できます。また、アセンブリ内のどの型を COM に公開するかを制御することもできます。

参照

処理手順

方法 : ランタイム呼び出し可能ラッパーをカスタマイズする

関連項目

タイプ ライブラリ インポータ (Tlbimp.exe)
MSIL 逆アセンブラ (Ildasm.exe)

概念

COM ラッパー
ランタイム呼び出し可能ラッパー
COM 呼び出し可能ラッパー
相互運用固有の属性の適用

その他の技術情報

タイプ ライブラリからアセンブリへの変換の要約
アセンブリからタイプ ライブラリへの変換の要約