能力值:
( LV2,RANK:10 )
|
-
-
2 楼
菜鸟路过,帮顶
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
A建立一个共享的内存映射文件,B写之。这样可以吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
可以啊,我感觉直接共享内存变量也可以,就是不知道怎么跟踪调试这种
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果楼主想看看内存映射在OD中的样子,自己先动手写一个,然后再调试自己的程序不就可以了么?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
感谢 ,OD下断OpenFileMapping无反应,是否排除掉此方法呢
另外我在1楼提到的这个类型的 程序B 发送数据给程序A,程序A来发送封包,这个是大家经常使用的方法还是一个个例呢? 如果是经常使用的方法那么这种方法一般情况下是采用何种方式来进行数据间的通信的呢?
另外我用OD回溯封包来源时是一直循环在 PeekMessageA、TranslateMessage、DispatchMessageA附近,奈何知识不广,只是猜测为循环接收到某消息后去读取数据发送封包,亦或是此消息内就包含了封包,能否告知一二,小菜谢过了
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
WM_COPYDATA?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
试过了 进程B并没有发送WM_COPYDATA消息
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我不知道别人的习惯,但我个人是经常使用这个方法进行进程间通信的,虽然通信方法非常非常的多,但这个方法也应该是经常被人用,依个人浅见,原因应该无非以下几点:
1、管道 WIN7下经常会有权限的问题。
2、SOCKET 仅仅为了两个进程通信就用SOCKET,未免有点大材小用。
3、DLL共享 需要一个DLL作为中转。
4、其它方法 都有各种各样的局限性。
加上内存映射使用非常简单,所以应该还是比较普及的。
具体使用的方法也无非两种:
1、消息投递 接收方获得MSG消息后使用某个事先约定好的接口函数或者其它方式获取映射区域的数据;
2、定时器,接收方定时扫描映射区域,发现数据即可采集;
映射区域在创建后是由一个指针所指向的,代码作者有可能使用函数接口进行保护,也可能直接把指针拿过来使用,比如memcpy、memset之类。但无论如何,本质上都依赖于指向该区域的指针,所以调试时跟踪这个指针个人以为比较好一点。如果实在不行,建议使用OD的超级字符串插件查询一下里面的内容,说不定会有收获。
以上是个人的一点看法,不一定正确。
|
能力值:
( LV4,RANK:40 )
|
-
-
10 楼
发送的消息不一定是WM_COPYDATA,建议先确定是否通过窗口来传递
如果是甚至就收集B所传的消息号,再带到自己的程序发给A进行排除
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
感谢cyfage的经验之谈,也感谢其他各位的解答,试了好几种常见的方法都没有找出来,看来得细细的逆了。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
方式比较多吧。
1 管道中还有命名管道和非命名管道
2消息队列据!
3 信号量, 不能传递复杂消息,只能用来同步
4 共享内存
5 黏贴板
6 邮槽
7 套接字
我用的最多的还是管道和套接字。
估计楼主的是共享内存或者管道了。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
看得晕晕的,我的天……
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
Mark以下,学习啦
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
学习下。
|
|
|