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