Share via


COMインターフェイスの定義

Microsoftでは、多くのCOMインターフェイスを定義しています。 ほとんどの場合、これらの汎用インターフェイスを再利用できます。 ただし、アプリケーションによっては、独自のオブジェクトインターフェイスを定義することが望ましい、または必要な特定の要件があります。

すべてのCOMインターフェイスは、IUnknownから直接または間接的に派生する必要があります。 その制約内で、カスタムインターフェイスは、非同期メソッドを含むほぼすべてのメソッドまたはパラメーターをサポートできます。 また、クライアントが実行時にオブジェクトのメソッドに関する情報にアクセスできるように、カスタムインターフェイスのタイプライブラリを生成することもできます。 インターフェイスを定義したら、Microsoft インターフェイス定義言語 (MIDL) で記述し、コンパイルして登録して、汎用インターフェイスと同じように使用します。 分散COMでは、リモートプロセスと同じコンピューター上の他のプロセスの両方でインターフェイスメソッドを使用できます。

最後に、COMインターフェイスを構築するには、C/C++コンパイラとMidl.exeコンパイラを含む開発環境が必要です。

COMインターフェイスを作成する手順は次のとおりです。

  • インターフェイスのマーシャリングサポートを提供する方法を決定します。タイプライブラリ駆動型マーシャリングまたはプロキシ/スタブDLLを使用します。 アパートメントの境界を越えて使用する場合は、インプロセスインターフェイスであってもマーシャリングする必要があります。 必要ないと思われる場合でも、すべてのCOMインターフェイスにマーシャリングサポートを組み込むことをお勧めします。 (詳細については、「インターフェイスマーシャリング」を参照してください。)
  • インターフェイス定義 (IDL) ファイルにインターフェイスまたはインターフェイスを記述します。 また、アプリケーション構成ファイル (ACF) でインターフェイスの特定のローカル側面を指定することもできます。 タイプライブラリドリブンマーシャリングを使用している場合は、型情報を生成したいインターフェイスを参照するlibraryステートメントを追加します。
  • MIDLコンパイラを使用して、タイプライブラリファイルとヘッダーファイル、またはC言語プロキシ/スタブファイル、インターフェイス識別子ファイル、DLLデータファイル、およびヘッダーファイルを生成します。 (詳細については、「MIDLのコンパイル」を参照してください。)
  • 選択したマーシャリング方法に応じて、モジュール定義 (DEF) ファイルを記述し、MIDLで生成されたすべてのファイルをコンパイルして単一のプロキシDLLにリンクし、システムレジストリにインターフェイスを登録するか、タイプライブラリを登録します。 詳細については、「タイプライブラリの読み込みと登録」および「プロキシDLLのビルドと登録」を参照してください。

IDLファイルの構造

COMクライアントとサーバー

インターフェイスのデザイン規則

コンポーネント オブジェクト モデル