进程外组件 数据传递 指针传递
来源:互联网 发布:文献索引数据库 编辑:程序博客网 时间:2024/06/05 08:02
我们知道进程都有自己的进程空间,都有自己的起始地址,因此在一个进程中的指针在另外一个进程中是无效的,一般在一个进程中的使用的地址类型的指针在进程之间传递时是
不能使用的,经过笔者测试,如果我们传递接口指针则不会出现该问题,但要注意的是要自己实现该接口,比如IStream*现在举例如下:
- //这是测试的代码
- STDMETHODIMP Csimple::test (IStream* psim)
- {
- char buf[100]={0};
- psim->Read(buf,100,NULL);
- MessageBoxA(NULL,buf,0,0);
- return S_OK;
- }
这是我们测试的代码
- #include "stdafx.h"
- #include<iostream>
- #include<shlobj h="">
- #include"interface.h"
- #include"mytype.h"
- using namespace std;
- #import"D:\project\StreamImp\Debug\StreamImp.dll"no_namespace
- extern "C" const GUID IID_Isimple=
- {
- 0xEFEFD281,0xBF44,0x416B,{0xBF,0x21,0x82,0xBA,0x42,0xF5,0x8A,0x4D}
- };
- extern "C" const GUID CLSID_simple=
- {
- 0xB9FB4559,0x22AB,0x4D9E,{0xA0,0xE1,0xE2,0x89,0x3C,0x54,0x40,0x25}
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- ::CoInitialize (NULL);
- IUnknown*pUnk=NULL;
- Isimple* psim=NULL;
- HRESULT hr=::CoCreateInstance(CLSID_simple,NULL,CLSCTX_LOCAL_SERVER,IID_Isimple,(void**)&pUnk);
- if(S_OK==hr)
- {
- cout<<"CoCreateInstance successfully\n";
- }
- else
- return 0;
- hr=pUnk->QueryInterface(IID_Isimple,(void**)&psim);
- if(S_OK==hr)
- {
- cout<<"QueryInterface successfully\n";
- }
- else
- return 0;
- ISimPtr sin;
- sin.CreateInstance(__uuidof(Sim));
- IStream*heh;
- sin.QueryInterface(IID_IStream,(void**)&heh);
- heh->Write("fsadas",100,NULL);
- hr=psim->test (heh);
- sin.Release();
- psim->Release();
- pUnk->Release();
- return 0;
- }
- </shlobj></iostream>
这是进程外组件参数的传递
0 0
- 进程外组件 数据传递 指针传递
- 进程外组件指针的传递
- 进程间传递数据
- 进程间传递数据
- 进程之间不能传递指针。。
- 组件间的数据传递
- ReactJs 组件间数据传递
- 组件之间的数据传递
- react---组件间数据传递
- angualr2组件之间传递数据
- 进程之间的数据传递
- Parcel_进程间数据传递
- 进程间如何传递数据
- 进程间如何传递数据
- Parcel_进程间数据传递
- 多进程和数据传递
- 指针传递 引用传递
- 指针传递,引用传递
- Python语言特性
- linux配置java环境变量3中方式
- CSS水平方向自适应布局方法小结
- 4276: [ONTAK2015]Bajtman i Okrągły Robin 费用流+线段树优化建图/贪心
- LuaStudio编辑调试软件
- 进程外组件 数据传递 指针传递
- IOS 开发push证书生成
- 编译原理动手实操,用java实现编译器-算术表达式及其语法解析器的实现
- Java数据结构----树--堆
- 对OC中NSData使用的理解
- php GD库的使用
- 小技巧教你解决此windows副本不是正版的问题
- Cause: Unknown command-line option '-X'.
- mtk输入子系统键盘事件处理流程