From c148c0419d3acd481cb84172412a2226909c9f99 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 16 Nov 2010 14:58:13 +0100 Subject: [PATCH] shell32: Added partial implementation of SHPropStgReadMultiple. --- dlls/shell32/shellole.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c index 09496478d22..5168e38af8e 100644 --- a/dlls/shell32/shellole.c +++ b/dlls/shell32/shellole.c @@ -715,8 +715,35 @@ HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmtid, HRESULT WINAPI SHPropStgReadMultiple(IPropertyStorage *pps, UINT uCodePage, ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar) { - FIXME("stub\n"); - return E_NOTIMPL; + STATPROPSETSTG stat; + HRESULT hres; + + FIXME("%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar); + + memset(rgvar, 0, cpspec*sizeof(PROPVARIANT)); + hres = IPropertyStorage_ReadMultiple(pps, cpspec, rgpspec, rgvar); + if(FAILED(hres)) + return hres; + + if(!uCodePage) { + PROPSPEC prop; + PROPVARIANT ret; + + prop.ulKind = PRSPEC_PROPID; + prop.u.propid = PID_CODEPAGE; + hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &ret); + if(FAILED(hres) || ret.vt!=VT_I2) + return S_OK; + + uCodePage = ret.u.iVal; + } + + hres = IPropertyStorage_Stat(pps, &stat); + if(FAILED(hres)) + return S_OK; + + /* TODO: do something with codepage and stat */ + return S_OK; } /*************************************************************************