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);
            }
        }
Exemple #2
0
        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);
            }
        }