コード例 #1
0
        internal static int GetPropertyValue(this IPropertySetStorage propertySetStorage, Guid fmtid, uint propid, out PROPVARIANT propvar)
        {
            HRESULT hr = (int)HRESULT.E_FAIL;

            propvar = default(PROPVARIANT);

            PROPSPEC[]       propspec        = new PROPSPEC[1];
            PROPVARIANT[]    propvars        = { propvar };
            IPropertyStorage propertyStorage = null;
            uint             grfMode         = (uint)(STGM.READ | STGM.SHARE_EXCLUSIVE);

            try
            {
                if (NativeMethods.Succeeded(hr = propertySetStorage.Open(ref fmtid, grfMode, out propertyStorage)))
                {
                    hr = propertyStorage.GetProperty(propid, out propvar);
                }
            }
            catch
            {
            }
            finally
            {
                if (propertyStorage != null)
                {
                    propertyStorage.FinalRelease();
                }
            }

            return(hr);
        }
コード例 #2
0
        internal static int GetProperty(this IPropertyStorage propertyStorage, uint propid, out PROPVARIANT propvar)
        {
            HRESULT hr = (int)HRESULT.E_FAIL;

            propvar = default(PROPVARIANT);

            PROPSPEC[]    propspec = new PROPSPEC[1];
            PROPVARIANT[] propvars = { propvar };

            propspec[0].ulKind   = (uint)PRSPEC.PROPID;
            propspec[0].u.propId = propid;

            if (NativeMethods.Succeeded(hr = propertyStorage.ReadMultiple(1, propspec, propvars)))
            {
                propvar = propvars[0];
            }

            return(hr);
        }