次の方法で共有


COM_INTERFACE_ENTRY_FUNC

ATL の QueryInterface ロジックにフックするための一般的な機構です。

COM_INTERFACE_ENTRY_FUNC( iid, dw, func )

パラメーター

  • iid
    [入力] 公開されるインターフェイスの GUID。

  • dw
    [入力] func に渡されるパラメーター。

  • func
    [入力] iid を返す関数ポインター。

解説

iid と問い合わせ先のインターフェイスの IID とが一致した場合は、func に指定された関数が呼び出されます。この関数は次のように宣言する必要があります。

HRESULT WINAPI func(void* pv, REFIID riid, LPVOID* ppv, DWORD_PTR dw);

関数が呼び出されると、pv はクラス オブジェクトを指します。また、riid パラメーターは問い合わせ先のインターフェイスを参照し、ppv はインターフェイスへのポインターを格納する関数がある場所へのポインターです。さらに、dw はエントリに指定したパラメーターです。関数がインターフェイスを返さない場合、*ppv は NULL に設定され、E_NOINTERFACE または S_FALSE が返されます。E_NOINTERFACE が返された場合、COM マップの処理は終了します。S_FALSE が返された場合、COM マップの処理はインターフェイス ポインターが返されなくても継続します。関数がインターフェイス ポインターを返す場合は、S_OK が返されます。

COM マップのエントリについては、「COM_INTERFACE_ENTRY に関するマクロ」を参照してください。

必要条件

ヘッダー: atlcom.h

参照

その他の技術情報

COM マップに関するマクロ

ATL マクロ