佚名通过本文主要向大家介绍了
请问typelibrarymarshaling是什么意思?还有别的marshaling吗?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问type library marshaling是什么意思?还有别的marshaling吗?
描述:
解决方案1:
描述:
thanks
解决方案1:
类型库列集:
自定义列集及标准列集。
列集(marshalling)
说到代理和存根,自然少不了列集,什么是列集?
列集,对函数参数进行打包处理得过程,因为指针等数据,必须通过一定得转换,才能被另一组件所理解,列集完成后,RPC调用就会产生。可以说列集是一种数据格式的转换方法。
列集有3种方式:
1. 类型库列集
它可以列集与OLEAUTOMATION兼容的任何接口,意思是你的接口的返回值必须是HRESULT,所使用的参数的类型也应该是与C++的VARIANT结构兼容。
2. 通过创建Stub / proxy DLL
这个DLL的源代由MIDL产生。你必须在服务器和客户机上都注册这个DLL(这是标准的marshal 方式)使用吃方法时,最好把stub / proxy代码编译作为一个独立的组件。
3. 自定义marshaling
自定义marshal要求在你的组件中必须实现IMarshal接口。当COM需要marchal时,他首先通过QueryInterface看你是否支持IMarshal接口,如果你实现了该接口,也就是说,由你控制了你的COM的所有参数和返回值的打包、解包的方法模式。