Секреты маршалинга
От: Чистяков В.Ю. Российская Империя www.nemerle.org
Дата: 28.04.02 03:47
Оценка: 445 (10)
Статья:
Секреты маршалинга
Автор(ы): Чистяков В.Ю.


Авторы:
Чистяков В.Ю.

Аннотация:
Marshaling – это процесс запаковки и посылки вызовов (методов COM-интерфейса) через границу процесса (или потоков одного и того же приложения). COM поддерживает два вида маршалинга: «стандартный маршалинг» и «ручной маршалинг». Первый подразумевает практически автоматическую поддержку со стороны средств разработки. Второй же дает максимальную гибкость и позволяет заменить реализацию процесса маршалинга на собственную. Попробуем подробнее разобраться с каждым из них.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Хорошая статья
От: Ерусов Дмитрий  
Дата: 29.04.02 03:47
Оценка:
Это хорошая статья.
Re: Секреты маршалинга -- дополнение для OLE
От: Аноним  
Дата: 05.10.04 16:03
Оценка:
Здравствуйте, Чистяков В.Ю.,

Отличная статья!

Недавно столкнулся с проблемой: вызывал OleLoad(), чтобы нарисовать OLE item. OleLoad() создает Inproc Handler. Стандартный, предоставляемый OLE RT, видимо, по совместительству — маршалер. Так вот проблема в том, что он не дает вызывать себя из другого потока (RPC_E_WRONG_THREAD) и не дает замаршалить себя для вызова из другого потока (CO_E_OBJNOTCONNECTED). Удалось победить создав агрегат стандартного обработчика и запретив возврат из QueryInterface() IMarshal и IdentityUnmarshal, т.е. переключившись на стандартный маршалинг (кстати я не смог найти описания IdentityUnmarshal ни в МСДН ни в хедерах VC).

Дмитрий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.