http://bugs.winehq.org/show_bug.cgi?id=26340
--- Comment #8 from Austin English austinenglish@gmail.com 2011-06-27 12:24:34 CDT --- (In reply to comment #7)
I added support for VT_VARIANT|VT_BYREF and example is now working.
else if (V_VT(body) == VT_VARIANT|VT_BYREF) { HRESULT hrs; VARIANTARG tmpdat; VariantInit(&tmpdat); char *ansistr; hrs = VariantCopyInd(&tmpdat, body); if(hrs != S_OK) ERR("Could not copy array \n"); SAFEARRAY *sa = V_ARRAY(&tmpdat); LONG size = sa->rgsabound[0].cElements; TRACE("Got size %d\n", size); void *ptr; SafeArrayAccessData(sa, (void**)&ansistr); bsc->body = GlobalAlloc(GMEM_FIXED, size); if (!bsc->body) { heap_free(bsc); return E_OUTOFMEMORY; } ptr = GlobalLock(bsc->body); memcpy(ptr, ansistr, size); GlobalUnlock(bsc->body); SafeArrayUnaccessData(sa); } else FIXME("unsupported body data type %d\n", V_VT(body));
Please send a patch to wine-patches@winehq.org. See http://wiki.winehq.org/SubmittingPatches for more info.