Getting array back from out-of-proc server

I wonder if anyone has a solution to the following problem.
I'm trying to implement IEnumMyTypeHere.Next() method and in IDL notation it
looks as follows:

HRESULT Next(
    [in] long celt,
    [out, size_is(celt), length_is(*pceltFetched)] IMyTypeHere
**rgMyTypeHere,
    [out] long *pceltFetched);

and I compile the IDL using MIDL compiler. When I import resulting .tlb
(using tlibimp) I lose size_is, length_is attributes (if I try to reverse to
IDL again).

In-process it works just fine when I walk the **rgMyType pointer and
populate the array inside the server (obviously, since it's the same
process), but if I instantiate the server out-of-process I can only return
one (first) element. If I try to increase the pointer I get "Server threw an
exception". It seems like size_is/length_is pair has no effect whatsoever.

My interface derives from IUnknown and I use oleautomation attribute + type
library so that standard marshaler could take care of it. What am I missing
here?

Thanks.