Кто нибудь занимался маршаллингом интерфейсов? Как передать указатель локального COM серверному COM+ объекту?
Насколько я понимаю последовательность при маршаллинге следующая
CreateSteamOnHGlobal
CoMarshalInterface
GetHGlobalFromStream
полученный HGLOBAL как раз и передают. Для этого у того объекта, которому передают указатель на интерфейс, создают скажем метод Method1([in] HGLOBAL gl) и уже внутри этого метода производится unmarshalling.
Все это прекасно работает при передаче указателя на интерфейс от COM к COM. Но при передаче указателя от COM к COM+ возникает проблема. При компиляции в библиотеке типов параметр типа HGLOBAL меняется на wireHGLOBAL, что представляет собой указатель на union _userHGLOBAL, которая содержит в себе еще одну структуру с непроизносимым названием. Так вот как с этим бороться? Что это за структуры такие? В MSDN об этом почти не упоминается. Зачем все так усложнять? Может надо как-то по другому маршаллить?