public void QueryInterface_NoSuchInterface_Success(object o, string iidString) { var cw = new ComWrappersImpl(); IntPtr ptr = cw.GetOrCreateComInterfaceForObject(o, CreateComInterfaceFlags.None); try { Guid iid = new Guid(iidString); Assert.Equal(E_NOINTERFACE, Marshal.QueryInterface(ptr, ref iid, out IntPtr ppv)); Assert.Equal(IntPtr.Zero, ppv); Assert.Equal(new Guid(iidString), iid); } finally { Marshal.Release(ptr); } }
public void AddRef_ValidPointer_Success() { var cw = new ComWrappersImpl(); IntPtr iUnknown = cw.GetOrCreateComInterfaceForObject(new object(), CreateComInterfaceFlags.None); try { Assert.Equal(2, Marshal.AddRef(iUnknown)); Assert.Equal(3, Marshal.AddRef(iUnknown)); Marshal.Release(iUnknown); Marshal.Release(iUnknown); Assert.Equal(2, Marshal.AddRef(iUnknown)); Marshal.Release(iUnknown); } finally { Marshal.Release(iUnknown); } }