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。