По-моему, в примере к функциям SafeArrayGetElement(), SafeArrayPutElement() ошибка.
for (i = 0; i <= iUBound — iLBound; i++) // судя по всему, i — целочисленная переменная
{
hr = SafeArrayGetElement(psaiInOut, i, &iVal);
// В этом месте компилятор ругается: error C2664: 'SafeArrayGetElement' : cannot convert
// parameter 2 from 'long' to 'long *'
if(FAILED(hr))
return hr;
iVal++;
hr = SafeArrayPutElement(psaiInOut, i, &iVal); // в этом тоже ругается
if(FAILED(hr))
return hr;
}
Необходимо завести массив long indexes[] и затем применять его, например, следующим образом:
for (i = 0, indexes[0] = iLBound; i <= iUBound — iLBound; i++, indexes[0]++)
{
hr = SafeArrayGetElement(psaiInOut, indexes, &iVal);
if(FAILED(hr))
return hr;