如何定义参数为函数指针类型的com接口
我用VS2008新建的ATL工程,在里面添加com接口method,即将sdk内的函数写成com接口的形式。其中有一个函数sdk内是如下定义的:int InstallCell(InstallInfoGuildCallBack fnInfo);fnInfo 是函数指针定义如下:
typedef int(*InstallInfoGuildCallBack) (wchar_t* pTitle, wchar_t* pContent, int nType);
请问我在com接口内add 什么样的 method?具体该怎么操作呢? vs2008 指针 SDK
[解决办法]
如果你只打算在 C++ 里面用, 把函数地址强转成整数传过去, 里面在把整数强转成函数指针来用吧.
如果要符合 COM 的规范, 能够跨语言使用, 你需要用 COM 的连接点 来做, 不能用回调函数.
[解决办法]
函数指针可以用在COM中,但:不能跨套间调用,不能跨进程调用,更不能跨主机调用,因为这三种调用发生时,COM系统都要对COM对象进行列集和散集,非标准类型会让系统列集散集器无所适从。
当然不怕麻烦的话,你可以写自己的列集散集器……
要想提供回调,传递一个接口过去就行了。