VC++主程序与DLL共享内存数据CreateFileMappingOpenFileMapping openfilemapping 失败

VC++ 主程序与DLL共享内存数据的实现主程序和DLL均定义要共享的数据结构体typedef struct _TagShareMem{char szSendCOM[10];char szReceviceCOM[10];char szTester[10];}TShareMem;
VC++主程序与DLL共享内存数据CreateFileMappingOpenFileMapping openfilemapping 失败
主程序写入内存://创建映射数据void CreateMemMap( ){HANDLE hMap; TShareMem*pShareMem; //创建共享内存,最后一个参数为创建的共享内存名称 hMap=::CreateFileMapping((HANDLE)-1,NULL,PAGE_READWRITE,0,sizeof(TShareMem),_T("MyShareMap")); if ( hMap == NULL ) { AfxMessageBox(_T("不能创建内存映射文件!")); } //写共享内存区,将内存映射为文件 pShareMem =(TShareMem*)MapViewOfFile(hMap, FILE_MAP_WRITE,0, 0, 0);memcpy(pShareMem->szSendCOM,_T("COM1"),10);memcpy(pShareMem->szReceviceCOM,_T("COM2"),10);memcpy(pShareMem->szTester,_T("zly"),10);}
DLL读取内存数据:void ReadMemMap(){HANDLE hMap; HANDLE hAddress;char szSendCOM[10];char szReceviceCOM[10];char szTester[10]; //读共享内存hMap = ::OpenFileMapping( FILE_MAP_WRITE, false,_T("MyShareMap"));if (hMap == 0 )MessageBox(NULL,_T("读取共享内存!"),_T("提示"),MB_OK);
hAddress = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);if ( hAddress == NULL )MessageBox(NULL,_T("不能打开映射文件!"),_T("提示"),MB_OK);TShareMem* pShareMem;pShareMem = (TShareMem*)hAddress;//初始化数据memset(szSendCOM,0,sizeof(szSendCOM));memset(szReceviceCOM,0,sizeof(szReceviceCOM));memset(szTester,0,sizeof(szTester));//拷贝共享内存区的内容CopyMemory(szSendCOM,pShareMem->szSendCOM,10);CopyMemory(szReceviceCOM,pShareMem->szReceviceCOM,10);CopyMemory(szTester,pShareMem->szTester,10);//释放CloseHandle(hMap); UnmapViewOfFile(hAddress);}
此方法实现主程序向DLL共享数据,反向也可以再共享回来,不过由大家来实现吧^__^
方法二:主程序定义结构体,通过在调用DLL函数时将传递结构体指针也可以实现数据传递。注:在DLL中要使用主程序的控件或者对话框时,最好不要直接传主程序的控件或者对话框的指针,而要传其句柄!!!
VC++ 共享内存数据的实现CreateFileMapping OpenFileMapping

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/24790.html

更多阅读

安卓手机用WIFI与电脑共享文件 电脑wifi共享文件

大家在往手机里传文件的时候是不是还在使用原始的数据线,要不就是使用蓝牙进行传输,数据线传输受到线路和接口的影响,也不是很方便,而且。数据线连接长期使用,易使手机数据口损坏。蓝牙传输又相对较为麻烦,电脑要有蓝牙模块,还需要在电脑端

win7无线局域网建立与文件共享 无线局域网共享文件夹

win7无线局域网建立与文件共享——简介这是老师给我们的作业,顺便把它传上来了:win7很强大,建立局域网的方法也很多,这里我用的是最简单的方法。win7无线局域网建立与文件共享——工具/原料win7带有无线网卡的台式电脑,或者笔记本电脑

声明:《VC++主程序与DLL共享内存数据CreateFileMappingOpenFileMapping openfilemapping 失败》为网友当木当栖分享!如侵犯到您的合法权益请联系我们删除