下载此文档

1026-S15.进程间通信实验.pdf


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
进程间通信实验
一、设计目的
配合嵌入式操作系统 WinCE 课程的学****通过对消息传递和共享内存的实现,加深对 
 下进程间通信机制的理解。
二、设计内容
在客户端(Client 端)使用 SendMessage 函数发送消息到服务器端(Server 端)或通过
使用内存映像机制实现进程间通信。
在 msgclient 的编辑框中输入字符串,点击 SendMessage,可以将信息发送到 msgserver 
程序的“接收到”编辑框中。这是采用 WM_COPYDATA 机制。
在 msgclient 的编辑框中输入字符串,点击 SendToMem,可以将信息发送到 msgserver 
程序的“接收历史”多行编辑框中。这是采用 FileMapping 机制。
三、开发环境 
Visual Studio 2005 及 WinCE5_ARM_Emulator 模拟器
四、设计原理
由于 WinCE 采用内存保护机制,不允许一个进程访问其它进程的地址空间。但是由于
进程间存在共享数据的需要,因此操作系统提供了一种机制,可以把一个进程地址空间中的
数据复制到另外一个进程的地址空间中。
常见通信方式: 剪贴板( Clipboard) 、 COM/DCOM 、网络套接字( Socket )、 
WM_COPYDATA 消息。
在 Win32 中,WM_COPYDATA 消息主要目的是允许在进程间传递只读数据。SDK 文
档推荐用户使用  SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可
能删除和修改数据。这个函数的原型如下: 
SendMessage(WM_COPYDATA,wParam, lParam); 
其中 wParam 设置为包含数据的窗口句柄,lParam 指向一个 COPYDATASTRUCT 的结
构,其定义为: 
typedef struct tagCOPYDATASTRUCT{ 
DWORD dwData; 
DWORD cbData; 
PVOID lpData; 
}COPYDATASTRUCT; 
其中 dwData 为自定义数据,  cbData 为数据大小,  lpData 为指向数据的指针。需要注
意的是,WM_COPYDATA  消息保证发送的数据从原进程复制到目标进程。但是, 
WM_COPYDATA 消息不能发送 HDC、HBITMAP 之类的东西,它们对于目标进程来说是无
效的。目标进程得到这些数据不能在原进程作任何事情,因为它们属于不同的进程。
要实现进程间的数据通信,在发送数据的程序中,首先要找到接收数据进程的窗口句柄 
pWnd , 可以用  CWnd::FindWindow(NULL,_  T("DataRecv")) 函数来得到, 其中字符串 
"DataRecv"为接收数据的程序名。然后用  SendMessage()函数发送数据,其具体的做法如下
所示,要发送的数据在 Cstring m_msg 中: 
COPYDATASTRUCT buf; 
 = 0; 
 = () * 2;

1026-S15.进程间通信实验 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yzhlya
  • 文件大小0 KB
  • 时间2014-11-21