CComObjectRootEx の実装
更新 : 2007 年 11 月
CComObjectRootEx は必須です。すべての ATL オブジェクトは、それぞれの継承に CComObjectRootEx または CComObjectRoot のインスタンスが 1 つ必要です。CComObjectRootEx は、COM マップ エントリに基づいた既定の QueryInterface 機構を提供します。
クライアントがインターフェイスを照会すると、COM マップを通して、オブジェクトのインターフェイスがクライアントに公開されます。照会は、CComObjectRootEx::InternalQueryInterface を介して行われます。InternalQueryInterface は、COM マップ テーブルのインターフェイスだけを処理します。
COM_INTERFACE_ENTRY マクロ、またはこのマクロの変形を使用して、COM マップ テーブルにインターフェイスを入力できます。たとえば、BEEPER サンプル の次のコードは、COM マップ テーブルに IDispatch、IBeeper、および ISupportErrorInfo の各インターフェイスを入力します。
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()