E = D + standard marshaller (allowing non-C/C++ clients including .NET client) **** .idl **** interface IXxxx : IUnknown library XxxxLibrary coclass CoXxxx **** .h **** class CoXxxx : ITest // IUnknown methods // IXxxx methods class CoXxxxFactory : IClassFactory // IUnknown methods // IClassFactory methods **** registry **** name -> co class GUID co class GUID -> name co class GUID -> DLL co class GUID -> library GUID library GUID -> library **** C++ usage **** import tlb IXxxxPtr p IXxxxPtr.CreateInstance() or: IXxxxPtr p() **** C# usage **** CoXxxx co = new CoXxxxClass() IXxxx o = (IXxxx)co