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