shootingwt 山东神思电子科技股份有限公司 软件工程师  2014年03月28日
请教关于内存读写权限的问题~~各位高手,拜托
环境描述:
有个项目是连接设备读写卡片,设备有基本的SDK接口库(A.DLL),然后做了个管理设备的助手(C#应用程序,B.EXE),之后又做了一个面向应用的SDK接口库(C.DLL),B.DLL与A.DLL是普通的调用关系,C.DLL和B.EXE通过socket通讯,B.EXE和A.DLL之间其实也有个接口库是D.DLL,这个D.DLL通过B.EXE指定的SDK名,API名和参数列表进行动态加载A.DLL,使用的是汇编PUSH 和 CALL方式动态的加载API和传入参数。

问题:
现在调用C.DLL的一个应用程序E.EXE有个数组作为指针向A.DLL发送,有时候函数执行成功,但是并没有向数组中写入数据,有时候直接被D.DLL的的try捕获到异常而返回。D.DLL使用汇编PUSH的指针地址没有问题,直接使用C.DLL调用D.DLL没有问题,但是通过socket之后就无法正常执行参数中带指针的函数。

分析:
E.EXE和B.EXE属于两个进程,数组空间属于E.EXE的栈空间,所以属于E.EXE的数组空间即时传入B.EXE中也没有读写权限,所以有时候程序无法正确写入,或者有时候程序直接因为没有写入权限而直接产生异常,被D.DLL的Try捕获到。

请问各位高手,我的分析是否正确,内存空间是不是具有这种不同进程间的权限?使用malloc或者其他方法会解决?
...全文
226 点赞 收藏 3
写回复
3 条回复

还没有回复,快来抢沙发~

发动态
发帖子
VC.NET
创建于2007-09-28

7260

社区成员

2.7w+

社区内容

.NET技术 VC.NET
社区公告
暂无公告