Syntax
HRESULT QueryInterface( const IID& iid, void **ppv );
Parameters
- iid
[in] 要求するインターフェースのID。
- ppv
[out] インターフェースポインタを受け取るポインタ変数。
Return Value
要求されたインターフェースをサポートしていたら S_OK、サポートしてなかったら E_NOINTERFACE を戻します。
Remarks
要求されたインターフェースをサポートしていたら ppv にインターフェースポインタを設定します。
Example
以下のコードをそのまま使用してください。
C++
HRESULT __stdcall MyCpx::QueryInterface (const IID& iid, void **ppv) { // IIDに対応するインターフェースを設定 if (iid == IID_IUnknown) { *ppv = static_cast<ICpx*>(this); } else if (iid == IID_Cpx) { *ppv = static_cast<ICpx*>(this); } else { *ppv = NULL; return E_NOINTERFACE; } reinterpret_cast<IUnknown*>(*ppv)->AddRef (); // 参照カウントインクリメント return S_OK; }Delphi
function TMyCpx.QueryInterface(const IID: TGUID; out ppv): HResult; stdcall; begin // IIDに対応するインターフェースを設定 if GetInterface(IID, ppv) then begin Result := S_OK; IUnknown (ppv)._AddRef; // 参照カウントインクリメント end else begin Result := E_NOINTERFACE; end end;