我们调用Com接口传入的参数可以被Com服务器修改返回,这个时候应在描述接口时使用out关键字,例如
HRESULT GetName([in,out] BSTR* bstrName);
假如没有out关键字,Com服务器修改了bstrName指向的字符串
1.Com服务器为进程内组件,则Com客户端可以看到bstrName被修改,
2.若Com服务器为进程外组件,则Com客户端bstrName不会被修改
加入没有in关键字,且为进程外组件,则Com服务器看不到bstrName指向的真实数据
另外我觉察到在描述出接口时,不管是否有关键字out,且Com组件为何种进程模型,若Com客户端修改了bstrName指向的字符串,则Com组件可以看到bstrName被修改
本文讨论了COM接口中参数传递机制,特别是如何通过使用'in'和'out'关键字来确保跨进程组件间正确地修改和读取BSTR类型的参数。
88

被折叠的 条评论
为什么被折叠?



