[proxy] web.archive.org← back | site home | direct (HTTPS) ↗ | proxy home | ◑ dark◐ light

IUnknown - Wikipedia

In computer programming, the IUnknown interface is the fundamental interface in the Component Object Model (COM). The COM specification[1] mandates that COM objects must implement this interface. Furthermore, every other COM interface must be derived from IUnknown. IUnknown exposes two essential features of all COM objects: object lifetime management through reference counting, and access to object functionality through other interfaces.

An IUnknown (or IUnknown-derived) interface consists of a pointer to a virtual method table that contains a list of pointers to the functions that implement the functions declared in the interface, in the order that they are declared in the interface. The in-process invocation call overhead is therefore identical to virtual method calls in C++.[2]

Methods[edit]

The IUnknown interface exposes three methods: QueryInterface, AddRef, and Release:[3]

interface IUnknown {
  virtual HRESULT QueryInterface (REFIID riid, void **ppvObject) = 0;
  virtual ULONG   AddRef () = 0;
  virtual ULONG   Release () = 0;
};

The IUnknown interface ID is defined as a GUID with the value of {00000000-0000-0000-C000-000000000046}.

A COM component's interfaces are required to exhibit the reflexive, symmetric, and transitive properties. The reflexive property refers to the ability for the QueryInterface call on a given interface with the interface's ID to return the same instance of the interface. The symmetric property requires that when interface B is retrieved from interface A via QueryInterface, interface A is retrievable from interface B as well. The transitive property requires that if interface B is obtainable from interface A and interface C is obtainable from interface B, then interface C should be retrievable from interface A.

Miscellaneous[edit]

See also[edit]

References[edit]

  1. ^ The Component Object Model Specification, archived from the original on 2004-02-15
  2. ^ "The Component Object Model". microsoft.com. Microsoft. 30 May 2018. Retrieved 12 February 2019.
  3. ^ IUnknown definition at microsoft.com Archived 2013-07-11 at the Wayback Machine; accessed 18-Jan-2008
  4. ^ ActiveX Controls at microsoft.com; accessed 18-Jan-2008
  5. ^ Plug-ins at apple.com; accessed 18-Sept-2011

External links[edit]