次の方法で共有


.NET Compact Framework コンポーネントへの COM の公開

更新 : 2007 年 11 月

.NET Compact Framework バージョン 2.0 以降では、マネージ コードから COM オブジェクトを呼び出すことができます。また、.NET Framework に用意されている タイプ ライブラリ インポータ (Tlbimp.exe) を使用してタイプ ライブラリをインポートしたり、Visual Studio でプロジェクトにタイプ ライブラリ参照を追加することもできます。インポートされたタイプ ライブラリは、メタデータで記述された COM 型の定義が含まれているため、相互運用機能アセンブリとも呼ばれます。

ネイティブ関数呼び出しが返された後でも、元はマネージ コードで割り当てられたネイティブ コードのメモリが、引き続きネイティブ コード ライブラリによって格納される場合は、ネイティブ ライブラリ オブジェクトを、ガベージ コレクタが移動または収集できないようにするために、マネージ コードに固定する必要があります。GCHandle 構造体を使用して、オブジェクトを固定できます。

マネージ コードでは、パッキング プロセスとして知られているように、ネイティブ オペレーティング システムで指定されている適切なバイト境界に合わせてデータ型のアライメントを行う必要があります。

COM オブジェクトを .NET Compact Framework から呼び出すには、次の 3 つのタスクが必要です。

  1. COM インターフェイスおよび型のマネージ定義を作成します。

  2. これらの定義をプロジェクトから参照します。

  3. COM インターフェイスおよび型をマネージ型として使用します。

マネージ定義を "ハンド コード" することもできます。

相互運用機能アセンブリの参照

相互運用機能アセンブリは、インポートされたタイプ ライブラリで、タイプ ライブラリ インポータまたは Visual Studio によって生成されたメタデータで記述された COM 型の定義が含まれています。

プロジェクトのビルド時に相互運用機能アセンブリを参照するには、コマンド ライン コンパイラで /r: スイッチを使用します。これは、Visual Studio でタイプ ライブラリへの参照を追加するときに行われます。

マネージ型としての COM 型の使用

インポート時は、既定のインターフェイスのメンバがクラスに追加されます。IDispatch 呼び出しと IUnknown 呼び出し、QueryInterface、および COM 参照カウントは、自動的に処理されます。エラー HRESULT 値は、自動的に例外にマップされます。

COM 型をインポートすると、次のようなプログラミング タスクで、その他のマネージ型として使用できます。

  • new (Visual Basic では New) キーワードでインスタンスを作成する場合。

  • 例外をキャッチする場合。

  • クラスを直接呼び出す場合。

  • IDispatch スタイルと IUnknown スタイルの呼び出しの間で選択を回避する場合。

  • 必要に応じて特定のインターフェイスにキャストする場合。

参照

その他の技術情報

.NET Compact Framework の相互運用性