Вы можете сделать это так:
[DLLImport(@"mydll.dll")]
public static extern void Foo(out ComTypes.IStream Stream, ref uint Size);
Назовите это так:
ComTypes.IStream Stream = null;
uint Size;
Foo(out Stream, ref Size);
Как обычно, убедитесь, что ваши соглашения о вызовах совпадают (в C # по умолчанию используется stdcall, в C ++ по умолчанию используется cdecl).
Кроме того, зачем возвращать Size
отдельно от потока, поскольку IStream
знает его размер и сообщит вам, если вы его попросите?