Здравствуйте, Ionich, Вы писали:
I>1-й вариант не подходит по вышеописанной причине.
По какой причине ? BSTR прекрасно подходит для передачи бинарных данных и работать с ней гораздо проще чем с SAFEARRAY'ем
I>А можно немного подробней о SAFEARRAY?
Здесь статья есть про работу с SAFERRAY'ями и в форуме неоднократно были примеры кода. Можешь например, использовать T_SafeVector из Platform SDK — сделай поиск по "T_SafeVector" в этом форуме