次の方法で共有


AtlInternalQueryInterface

更新 : 2007 年 11 月

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

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 は外部オブジェクトの Unknown に処理を任せません。COM マップ テーブルにインターフェイスを入力するには、COM_INTERFACE_ENTRY マクロ、またはそのバリエーションを使用します。

使用例

// 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 ();
}

必要条件

ヘッダー : atlbase.h

参照

参照

CComObjectRootEx::InternalAddRef

CComObjectRootEx::InternalRelease

その他の技術情報

COM マップに関するグローバル関数