public static bool TryGetMetadataByName(this IWICMetadataQueryReader meta, string name, out PropVariant val)
        {
            val = null;

            int hr = ProxyFunctions.GetMetadataByName(meta, name, IntPtr.Zero);

            if (hr >= 0)
            {
                val = new PropVariant();
                meta.GetMetadataByName(name, val);
            }
            return(hr >= 0);
        }
예제 #2
0
        public static bool TryGetMetadataByName(this IWICMetadataQueryReader meta, string name, [NotNullWhen(true)] out PropVariant?value)
        {
            value = null;

            int hr = ProxyFunctions.GetMetadataByName(meta, name, IntPtr.Zero);

            if (hr >= 0)
            {
                value = new PropVariant();

                var pvMarshal = PropVariant.Marshaler.GetInstance(null);
                var pvNative  = pvMarshal.MarshalManagedToNative(value);
                hr = ProxyFunctions.GetMetadataByName(meta, name, pvNative);
                pvMarshal.MarshalNativeToManaged(pvNative);
                pvMarshal.CleanUpNativeData(pvNative);
            }

            return(hr >= 0);
        }