COM 객체의 핵심을 이루는 인터페이스.
컴자체가 바이너리 모델이 거의 C++을 유사한 형태로 가져온 만큼 C++ 모습을 보면 대략 어떤 향태인지를 추측할 수 있다.
~cpp
// c++ implementation
class IUnknown
{
public:
virtual HRESULT QueryInterface(REFIID riid, void** ppvObject) = 0;
virtual ULONG AddRef() = 0;
virtual ULONG Release() = 0;
}
// c implementation
typedef struct IUnknown IUnknown
typedef struct {
HRESULT (*QueryInterface) (IUnknown *This, REFIID *This, REFIID riid, void** ppvObject);
ULONG (*AddRef) (IUnknown *This);
ULONG (*Release) (IUnknown *This);
} IUnknownVtable;
typedef struct {
struct IUnknownVtable * lpVtable;
} IUnknown;