CMNロゴ

ICpx::QueryInterface Method


インターフェース問合せメソッドです。

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;



ICpx