CComObjectRootEx の実装
CComObjectRootEx は不可欠なものです。すべての ATL オブジェクトの継承内に、CComObjectRootEx
または CComObjectRoot のインスタンスが 1 つ必要です。 CComObjectRootEx
は、COM マップ エントリに基づく既定の QueryInterface
メカニズムを提供します。
その COM マップを介して、オブジェクトのインターフェイスは、クライアントによるインターフェイスの照会時にそのクライアントに公開されます。 照会は、CComObjectRootEx::InternalQueryInterface
を介して実行されます。 InternalQueryInterface
が処理するのは、COM マップ テーブル内のインターフェイスのみです。
COM_INTERFACE_ENTRY マクロまたはそのバリエーションの 1 つを使用して、インターフェイスを COM マップ テーブルに入れることができます。 たとえば、次のコードはインターフェイス IDispatch
、IBeeper
、および ISupportErrorInfo
を COM マップ テーブルに入力します。
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()