You can pass your structure just as buffer, exactly like you pass the strings. But it is not very ok, because binary representation of structure may be different on server and client. IStream is COM interface, so it is available at COM level which is higher than RPC level. Anyway, IStream is for serialization, but you need marshalling.
That you have to know, is that some user defined structure used in RPC, should be defined at RPC level. So, you have to marshalize it. It means, you make it RPC. After passing the structure between client and server, it should be unmarshalized and used. This means, clients and servers will have always the same structure, but binary compatible with own platform. This can be done manually, or can be used some RPC compiller, which will convert function calls to RPC calls, and all the RPC marshalling routines will be hidden in proxy stub files. You will describe your structure in the RPC language, so it should exist at RPC level. In your language you will deal with mappings from RPC level to your language.
If you use Microsoft RPC, you would likely to use IDL (MIDL) do define your own structures at RPC level. And use MIDL to compile them. All the marshalling/unmarshalling routines you will have in the generated proxy and stub files.http://msdn.microsoft.com/en-us/library/windows/desktop/aa367080(v=vs.85).aspx