windowscodecs: Implement IPropertyBag2::Read.
This commit is contained in:
parent
d27fe13ffb
commit
2ee3e8073f
|
@ -128,8 +128,36 @@ static LONG find_item(PropertyBag *This, LPCOLESTR name)
|
|||
static HRESULT WINAPI PropertyBag_Read(IPropertyBag2 *iface, ULONG cProperties,
|
||||
PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError)
|
||||
{
|
||||
FIXME("(%p,%u,%p,%p,%p,%p): stub\n", iface, cProperties, pPropBag, pErrLog, pvarValue, phrError);
|
||||
return E_NOTIMPL;
|
||||
HRESULT res = S_OK;
|
||||
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,
|
||||
|
|
|
@ -271,7 +271,6 @@ static void test_filled_propertybag(void)
|
|||
|
||||
test_propertybag_write(property);
|
||||
|
||||
todo_wine
|
||||
test_propertybag_read(property);
|
||||
|
||||
IPropertyBag2_Release(property);
|
||||
|
|
Loading…
Reference in New Issue