Aggregation
OLE DB objects, like other COM objects, support aggregation. To facilitate this, all methods that create a new object accept an IUnknown interface pointer to the controlling unknown. If a method, such as IRowsetInfo::GetSpecification, returns an interface pointer to an existing object, it should use the controlling unknown of the object to return the interface pointer, as opposed to using the object itself.
OLE DB providers are required to support aggregation of all objects.