A = base **** .h **** interface IXxxx : IUnknown class CoXxxx : IXxxx // IUnknown methods // IXxxx methods class CoXxxxFactory : IClassFactory // IUnknown methods // IClassFactory methods **** registry **** name -> co class GUID co class GUID -> name co class GUID -> DLL **** C++ usage **** IClassFactory *f = CoGetClassObject() IXxxx o = f->CreateInstance() or: IXxxx o = CoCreateInstance() **** actions **** translate CLSID to DLL via registry load DLL call DllGetClassObject to get instance of factory call factory CreateInstance with IID to get instance (calls AddRef on instance) use instance call Release