IUnknownインタフェースは、Component Object Model (COM)において基盤となるインタフェースである。COMの仕様では、すべてのCOMオブジェクトはIUnknownインタフェースを実装していなければならないとされている。すなわち、IUnknownは、COMにおけるルートクラスである。また、すべてのCOMインタフェースはIUnknownの派生である。IUnknownには、QueryInerface、AddRef、Releaseの3つのメソッドがある。QueryInterfaceは、ほかに実装しているインタフェースを問い合わせ、取得するメソッドである。AddRefとReleaseは、それぞれ参照カウントの増減を行う。AddRefとReleaseの戻り値は現在の参照カウントの値であるが、あくまでテスト用を目的としている。なお、IUnknownのインタフェースIDは、{00000000-0000-0000-C000-000000000046}と定義されている。COMの仕様にはないが、旧Platform SDK・現Windows SDKに用意されているヘッダファイルをC++で用いると、テンプレートによって型安全性を向上させた次のようなQueryInterfaceが定義される。なお、__uuidof (Q)は、Qに関連付けられたGUIDを取得するVisual C++の拡張である。こちらを用いると、インタフェースへのポインタと異なるインタフェースIDを指定するという誤りを避けることが可能である。前述のように、IUnknownは実装しているほかのインタフェースの問い合わせ・取得(QueryInterface)と参照カウントの管理を行うメソッドを持っているのみである。そして、すべてのCOMインタフェースはIUnknownから派生(直接に、またはIUnknownから派生したインタフェースから派生することによって間接的に)しているため、すべてのCOMインタフェースで必ずこれらのメソッドが呼び出し可能であることが保証される。逆に、IUnknownを直接扱う有用な例は少ない。2つの異なるインタフェースを指すポインタが同じCOMオブジェクトであるか否かを調べるには、IUnknownのIIDを指定してのQueryInterfaceの呼び出しを双方で行い、得られたインタフェースへのポインタが一致するか否かを調べるとよい。これは、あるCOMオブジェクトに対し、IUnknownのIIDを指定してのQueryInterfaceの呼び出しで得られるポインタは、かならず(どのインタフェースでQueryInterfaceを呼んでも)同じポインタ値となる保証がある(逆に言えば、実装者はそのように実装する必要がある)ためである。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。