次の方法で共有


COM マップのグローバル関数

これらの関数は、COM マップへの IUnknown の実装をサポートします。

関数 説明
AtlInternalQueryInterface 非集計オブジェクトの IUnknown にデリゲートします。
InlineIsEqualIUnknown インターフェイスを IUnknown と比較するための効率的なコードを生成します。

要件

ヘッダー: atlbase.h

AtlInternalQueryInterface

要求されたインターフェイスへのポインターを取得します。

HRESULT AtlInternalQueryInterface(
    void* pThis,
    const _ATL_INTMAP_ENTRY* pEntries,
    REFIID iid,
    void** ppvObject);

パラメーター

pThis
[入力] QueryInterface に公開されるインターフェイスの COM マップを含むオブジェクトへのポインター。

pEntries
[入力] 使用可能なインターフェイスのマップにアクセスする _ATL_INTMAP_ENTRY 構造体の配列。

iid
[入力] 要求されているインターフェイスの GUID。

ppvObject
[出力] iid に指定するインターフェイス ポインターへのポインター。インターフェイスが見つからない場合は NULL。

戻り値

標準 HRESULT 値のいずれか。

解説

AtlInternalQueryInterface が処理するのは、COM マップ テーブル内のインターフェイスのみです。 オブジェクトが集計されている場合、AtlInternalQueryInterface によって、外部不明にデリゲートされません。 マクロ COM_INTERFACE_ENTRY またはそのバリアントの 1 つを使用して、COM マップ テーブルにインターフェイスを入力できます。

// MyTimerProc is a callback function passed to SetTimer()
VOID CALLBACK MyTimerProc(HWND /*hwnd*/, UINT /*uMsg*/, UINT /*idEvent*/, 
   DWORD /*dwTime*/)
{
   LPDISPATCH pDisp = NULL;
   // gpMyCtrl is a global variable of type CMyCtrl*
   // _GetEntries() is a static function you get with BEGIN_COM_MAP()
   AtlInternalQueryInterface (gpMyCtrl, CMyCtrl::_GetEntries(), IID_IDispatch, 
      (LPVOID*)&pDisp);
   //...
   pDisp->Release ();
}

InlineIsEqualIUnknown

IUnknown をテストする特別な場合に、この関数を呼び出します。

BOOL InlineIsEqualUnknown(REFGUID rguid1);

パラメーター

rguid1
[入力] IID_IUnknown と比較する GUID。

関連項目

関数
COM マップに関するマクロ