デュアル インターフェイス
オートメーション インターフェイス への移動
デュアル インターフェイスはカスタム インターフェイスであると同時に、ディスパッチ インターフェイスでもあります。これは IDispatch から派生した COM vtable インターフェイスとして実装されています。実行時にのみオブジェクトにアクセスできるコントローラには、ディスパッチ インターフェイスが使用可能です。コンパイル時バインディングを利用できるオブジェクトには、より効率的な vtable インターフェイスが使用されます。
デュアル インターフェイスは、次のように、vtable インターフェイスとディスパッチ インターフェイスの両方の利点を兼ね備えています。
- vtable インターフェイスの場合、コンパイラは型チェックを実行して、より有益なエラー メッセージを出力します。
- 型情報を取得できないオートメーション コントローラでは、ディスパッチ インターフェイスを通じて実行時にオブジェクトにアクセスできるようになります。
- インプロセス サーバーの場合は、vtable インターフェイスを介して高速にアクセスできるという利点があります。
- アウトオブプロセス サーバーの場合は、vtable インターフェイスについてもディスパッチ インターフェイスについても、COM がデータをマーシャリングします。COM には、タイプ ライブラリに含まれている情報に基づいてインターフェイスをマーシャリングできる汎用のプロキシ/スタブ実装が用意されています。
デュアル インターフェイスの vtable(仮想テーブル)の最初の 3 つのエントリは IUnknown インターフェイスを参照し、次の 4 つのエントリは IDispatch インターフェイスを参照しています。残りのエントリは、カスタム インターフェイスのメンバに直接アクセスするための COM エントリです。