Beispiel #1
0
        public void TestVariantToString()
        {
            VariantStruct variantStruct = default(VariantStruct);

            variantStruct.vt  = (short)VarEnum.VT_BSTR;
            variantStruct.ptr = Marshal.StringToBSTR("test string");

            IntPtr nativeVariant = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(VariantStruct)));

            Marshal.StructureToPtr(variantStruct, nativeVariant, false);
            try {
                Assert.AreEqual("test string", Marshal.GetObjectForNativeVariant(nativeVariant));
            } catch (PlatformNotSupportedException e) {             // FULLAOT
                Marshal.FreeBSTR(variantStruct.ptr);
                Marshal.FreeCoTaskMem(nativeVariant);
                return;
            }

            Marshal.FreeBSTR(variantStruct.ptr);
            variantStruct.ptr = IntPtr.Zero;
            Marshal.StructureToPtr(variantStruct, nativeVariant, false);
            Assert.IsNull(Marshal.GetObjectForNativeVariant(nativeVariant));

            Marshal.FreeCoTaskMem(nativeVariant);
        }
Beispiel #2
0
        public void TestStringToVariant()
        {
            IntPtr nativeVariant = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(VariantStruct)));

            try {
                Marshal.GetNativeVariantForObject("test string", nativeVariant);
            } catch (PlatformNotSupportedException e) {             // FULLAOT
                Marshal.FreeCoTaskMem(nativeVariant);
                return;
            }

            VariantStruct variantStruct = (VariantStruct)Marshal.PtrToStructure(nativeVariant, typeof(VariantStruct));

            Marshal.FreeCoTaskMem(nativeVariant);

            Assert.AreEqual((short)VarEnum.VT_BSTR, variantStruct.vt);
            Assert.AreEqual("test string", Marshal.PtrToStringBSTR(variantStruct.ptr));

            Marshal.FreeBSTR(variantStruct.ptr);
        }