Здравствуйте, vim, Вы писали:
vim>В данном конкретном случае использование атрибута ComVisible неприемлимо, поэтому интересно как это можно реализовать по средствам использования Unmanaged API, как в примере приведенном выше для простых типов.
Тогда лучше на .Net сделать ComVisible обёртку над тем кодом, где "использование атрибута ComVisible неприемлимо". И работать с ней чере интерфейсы.
Если уж и этот вариант не подходит, то тогда, видимо, остаётся делать через VARIANT и SafeArray.