⟩ What is IUnknown interface?
The IUnknown interface lets clients get pointers to other interfaces on a given object through the QueryInterface method, and manage the existence of the object through the IUnknown::AddRef and IUnknown::Release methods.
IUnknown methods can be used to switch between interfaces on an object, add references, and release objects.
You must implement IUnknown as part of every interface.