Масса! Джимми иметь задавать глупый вопрос, масса!
А почему Вы не сделали (BSTR*) (Result->parray->pvData)? Ведь белым людям
можно приводить все, что угодно куда угодно!?Невзирая на степень недокументированности
тех или иных полей структтуры — ведь m$ никогда их не меняет(там тоже белые люди)!
1."Неважно, как быстро работает твоя программа, если она не работает."(с)
2.Приведенный мною код — результат двухсуточного чтения MSDN и попыток понять,
что же именно и где в <стандартных> функциях для VARIANT не работает.Понял.
Финальный вариант, оттестированный и работающий с клиентом, как надо :
BSTR HUGEP *pBSTR;
VariantInit(Result);
Result->vt= VT_ARRAY | VT_BSTR; // Вот где собака порылась...
Result->parray=SafeArrayCreateVector(VT_BSTR,0,2);
if(!Result->parray)
{
return E_OUTOFMEMORY;
}
hr = SafeArrayAccessData(Result->parray ,(void HUGEP* FAR*)&pBSTR);
{pBSTR[0]=...}
SafeArrayUnaccessData(Result->parray );
return S_OK;
Не профилировал — IMHO, глупость.
P.S. Не флейма глупого ради, а совета для, ежели кто так же мучаться будет.