public static uint DllGetClassObject(Guid rclsid, Guid riid, out IntPtr ppv) { ppv = IntPtr.Zero; try { if (riid.CompareTo(Guid.Parse("00000001-0000-0000-c000-000000000046")) == 0) { //Call to DllClassObject is requesting IClassFactory. var instance = new ComClass1(); IntPtr iUnk = Marshal.GetIUnknownForObject(instance); //return instance; Marshal.QueryInterface(iUnk, ref riid, out ppv); return(0); } else { return(0x80040111); //CLASS_E_CLASSNOTAVAILABLE } } catch { return(0x80040111); //CLASS_E_CLASSNOTAVAILABLE } }
public static int DllGetClassObject(Guid rclsid, Guid riid, out IntPtr ppv) { ppv = IntPtr.Zero; try { //Call to DllClassObject is requesting IClassFactory. var instance = new ComClass1(); IntPtr iUnk = Marshal.GetIUnknownForObject(instance); //return instance; Marshal.QueryInterface(iUnk, ref riid, out ppv); return(0); } catch { return(-1); } }