The following key terms and concepts were introduced in this module:
- Interface navigation: Using a pointer to one COM interface to get a pointer to another COM interface in the same COM object. IUnknown::QueryInterface supports interface navigation.
- Reference counting:Reference counting supports lifetime management of an object. When an object gives an inteface pointer to a client, a reference count is incremented by calling AddRef. The client calls Release when it no longer need the interface pointer. Release decrements the pointer's reference count. When all the reference counts in an object are zero, the object is not being accessed and can be removed from memory.
- Object-level IUnknown:Object-level IUnknown is a separate implementation of IUnknown used to identify a COM object. A standard implementation convention is to have all IUnknown methods from other interfaces in an object do nothing other than call through (delegate) to the object-level IUnknown. This centralizes interface navigation and reference counting in one place within a COM object.
- Explicit aggregation:In explicit aggregation the outer COM object is coded to know the interfaces supported by an aggregated COM object.
- Blind aggregation:Blind aggregation occurs when an outer COM object is asked for an interface it does not know. The outer COM object calls the QueryInterface implementations of all inner COM objects to see if they support the interface.