预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第页共NUMPAGES6页第PAGE\*MERGEFORMAT6页共NUMPAGES\*MERGEFORMAT6页实验四进程通信调试实验[实验目的]1、掌握WinCE5.0下进程间通信机制;2、掌握通过对消息传递和共享内存的实现进程间通信的方法;3、了解实现进程通信的编程方法[实验仪器]1、装有PlatformBuilder、EVC和VS.Net开发平台的PC机一台2、XSBase270实验开发平台一套[实验原理]1、软件原理:在项目开发和系统集成中,进程间通信的应用非常广泛,进程间的通信有以下几种实现方法:利用Windows消息(WM_COPYDATA)、全局原子、内存映射、命名管道以及邮曹。下面介绍利用WM_COPYDATA和内存映射实现进程通信的方法。1.1WM_COPYDATA方法使用WM_COPYDATA消息可以很方便地传递进程间的数据,具体定义如下:SendMessage(hwnd,WM_COPYDATA,wParam,lParam);其中wParam设置为包含数据的窗体的句柄,lParam指向一个COPYDATASTRUCT的结构:typedefstructtagCOPYDATASTRUCT{DWORDHYPERLINK""dwData;//用户定义数据DWORDHYPERLINK""cbData;//数据大小PVOIDHYPERLINK""lpData;//指向数据的指针}COPYDATASTRUCT也就是通过COPYDATASTRUCT的结构来传递数据。需要注意的是,WinCE提供的WM_COPYDATA消息来传递进程间的数据,并没有提供同步机制,所以必须要使用SendMessage函数来发送消息,且等待直到对方处理完后返回,而不能使用PostMessage函数来发送WM_COPYDATA。1.2内存映射文件的方法内存映射文件提供了一种完全不同的读写文件的方法,它是将文件内容映射到内存的某个区域,读写文件直接操作内存即可。下面介绍内存映射文件所需的API函数:(1)创建用于内存映射访问的文件在WinCE中,要想创建或打开一个用于内存映射访问的文件,需要通过CreateFileForMapping函数来实现,它是CreateFile函数的一个特殊版本,专门提供给内存映射文件使用,CreateFileForMapping函数的定义如下:HANDLECreateFileForMapping(LPCTSTRHYPERLINK""lpFileName,DWORDHYPERLINK""dwDesiredAccess,DWORDHYPERLINK""dwShareMode,LPSECURITY_ATTRIBUTESHYPERLINK""lpSecurityAttributes,DWORDHYPERLINK""dwCreationDisposition,DWORDHYPERLINK""dwFlagsAndAttributes,HANDLEHYPERLINK""hTemplateFile);(2)创建或打开内存映射文件对象在使用内存映射文件时,需要创建或打开内存映射文件对象,它实际上是于已经创建或打开的文件建立连接。创建或打开内存映射对象通过CreateFileMapping函数实现,此函数定义如下:HANDLECreateFileMapping(HANDLEHYPERLINK""hFile,LPSECURITY_ATTRIBUTESHYPERLINK""lpFileMappingAttributes,DWORDHYPERLINK""flProtect,DWORDHYPERLINK""dwMaximumSizeHigh,DWORDHYPERLINK""dwMaximumSizeLow,LPCTSTRHYPERLINK""lpName);成功创建内存映射文件对象,函数将返回一个内存映像对象句柄,如果在创建内存映射文件对象已存在,将直接返回已打开的内存映像文件对象句柄。(3)获取内存映像文件对象视图当创