У меня есть win32 Dll модули с одинаковыми экспортируемыми функциями Decode и Encode, в качестве параметра в них передается указатель на на COM IStream интерфейс:
long Decode(long data, IStream* pStream); // читает из потока данные
long Encode(long data, IStream* pStream); // записывает в поток данные
Мне необходимо написать .NET Managed интерфейс и от этого интерфейса пронаследовать Managed классы, которые будут вызывать функции одного из этих Dll модулей.
__gc __interface IFC
{
long Decode(Stream s);
long Encode(Stream s);
};
__gc class В : IFC
{
public:
long Decode(Stream s);
long Encode(Stream s);
protected:
long data;
};
Основная проблема — маршалинг System.IO.Stream класса в COM IStream.
В MSDN-е я нарыл только Marchal.GetComInterfaceForObject метод, и UCOMIStream класс, причем очень скудно описано, нет примеров.
В MarshalAsAttribute также ничего про потоки не нашел

(
Может у кого-то есть положительный опыт маршалинга System.IO.Stream -> COM IStream ?
Переделывать или обрамлять Dll-ки в COM классы я не хочу.