Sending large data over COM interface-Collection of common programming errors
Hashes aren’t supported over COM, but SAFEARRAYs are. Safearrays can be nested, so you could pass an array of 2-element arrays.
While Objects per se can’t be passed across COM, interfaces can be. (COM is language neutral; passing a C++ object to a C# or Perl runtime isn’t going to work. COM interfaces have a common implementation across languages, and so can be passed around.) Safearrays support arrays of interfaces, as well.