COM_INTERFACE_ENTRY_FUNC
更新 : 2007 年 11 月
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 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