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); }
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); }