Commit 2ee3e807 authored by Ludger Sprenker's avatar Ludger Sprenker Committed by Alexandre Julliard

windowscodecs: Implement IPropertyBag2::Read.

parent d27fe13f
...@@ -128,8 +128,36 @@ static LONG find_item(PropertyBag *This, LPCOLESTR name) ...@@ -128,8 +128,36 @@ static LONG find_item(PropertyBag *This, LPCOLESTR name)
static HRESULT WINAPI PropertyBag_Read(IPropertyBag2 *iface, ULONG cProperties, static HRESULT WINAPI PropertyBag_Read(IPropertyBag2 *iface, ULONG cProperties,
PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError) PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError)
{ {
FIXME("(%p,%u,%p,%p,%p,%p): stub\n", iface, cProperties, pPropBag, pErrLog, pvarValue, phrError); HRESULT res = S_OK;
return E_NOTIMPL; ULONG i;
PropertyBag *This = impl_from_IPropertyBag2(iface);
TRACE("(%p,%u,%p,%p,%p,%p)\n", iface, cProperties, pPropBag, pErrLog, pvarValue, phrError);
for (i=0; i < cProperties; i++)
{
LONG idx;
if (pPropBag[i].dwHint && pPropBag[i].dwHint <= This->prop_count)
idx = pPropBag[i].dwHint-1;
else
idx = find_item(This, pPropBag[i].pstrName);
if (idx > -1)
{
VariantInit(pvarValue+i);
res = VariantCopy(pvarValue+i, This->values+idx);
if (FAILED(res))
break;
phrError[i] = res;
}
else
{
res = E_FAIL;
break;
}
}
return res;
} }
static HRESULT WINAPI PropertyBag_Write(IPropertyBag2 *iface, ULONG cProperties, static HRESULT WINAPI PropertyBag_Write(IPropertyBag2 *iface, ULONG cProperties,
......
...@@ -271,7 +271,6 @@ static void test_filled_propertybag(void) ...@@ -271,7 +271,6 @@ static void test_filled_propertybag(void)
test_propertybag_write(property); test_propertybag_write(property);
todo_wine
test_propertybag_read(property); test_propertybag_read(property);
IPropertyBag2_Release(property); IPropertyBag2_Release(property);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment