http://bugs.winehq.org/show_bug.cgi?id=26340
--- Comment #7 from ocean04@suomi24.fi 2011-06-27 04:40:56 CDT --- 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));