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