Passing VARIANTs to an OLE Automation Server

Does anyone know how to pass a record type variable to an OLE server?

I've written an OLE controller in Delphi 16 which uses a huge record,
containing various subrecords. I've written the OLE server in Borland C++ 4.5
and passing any standard automation data type (TAutoInt etc.) is a breeze,
but how do I pass this huge record as an argument through the OLE layer and
back?
It seems that DISPPARAMS's VARIANT doesn't cater for this.

Can anybody please help?