F = E + universal marshaller & self register **** .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 auto via DllRegisterServer and DllUnegisterServer in DLL **** C++ usage **** import tlb IXxxxPtr p IXxxxPtr.CreateInstance() or: IXxxxPtr p() **** C# usage **** CoXxxx co = new CoXxxxClass() IXxxx o = (IXxxx)co