IUnknownインターフェース

COMのインターフェースとして使われる。
  • QueryInterface
  • AddRef
  • Release
の3つのメソッドをサポートする。
…というか、サポートしなければならないので、ちゃんと実装しよう。

IUnknownの定義を細かく追ってみる…

Unknwn.hにて以下のように定義されている。
EXTERN_C const IID IID_IUnknown;
extern "C++"
{
    MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
    IUnknown
    {
    public:
        BEGIN_INTERFACE
        virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ __RPC__deref_out void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
        virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;

        virtual ULONG STDMETHODCALLTYPE Release( void) = 0;

        template<class Q>
        HRESULT
#ifdef _M_CEE_PURE
        __clrcall
#else
        STDMETHODCALLTYPE
#endif
        QueryInterface(Q** pp)
        {
            return QueryInterface(__uuidof(Q), (void **)pp);
        }

        END_INTERFACE
    };
} // extern C++

とりあえずここまで…

…とまぁ、かなり難解な状態なので、ひとつづつ追っていくことにする…。
謎な部分を以下に列挙する
最終更新:2008年09月17日 15:35
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。