我们调用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被修改