Thursday, August 27, 2009

Small DCOM "things" regarding custom marshaling, size_is

Have problems with DCOM? size_is or length_is are not working? From the whole array passed as byte* parameter only the first byte is reaching the COM server or client? You need to create the proxy/stub DLL (http://www.biztalkgurus.com/blogs/biztalksyn/archive/2006/02/28/COM-proxy-stub-dll-and-why-do-you-need-it.aspx) and register it on the both systems. TLB doesn't contains the exact parameters definition (like size_is), so without this proxy/stub (which defines Custom Marshaler for your COM component) COM doesn't know how to correctly pass your data over the border.

--- in Russian :) ---
Мучаетесь с DCOM? Не работают size_is и length_is? Из массива-параметра (например byte*) передаеться только 1 байт? Вам необходимо сделать proxy/stub dll (http://www.biztalkgurus.com/blogs/biztalksyn/archive/2006/02/28/COM-proxy-stub-dll-and-why-do-you-need-it.aspx), и зарегить её на обоих системах. Проблема в том что TLB не содержит всего богатства информации о параметрах, например size_is и т.д. и без proxy/stub COM не знает как маршалить данные.