-
struct SData
{
int m_name;
BOOL m_data;
};写入内存映射内容代码
int iLengByte=sizeof(SData);
LPBYTE lpData;
//创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式
HANDLE hMap=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE|SEC_COMMIT,0,iLengByte,"S_DATA");
if (hMap!=NULL)
{
//将文件映射对象的全部或部分映射到进程地址空间
lpData =(LPBYTE)MapViewOfFile(hMap,FILE_MAP_WRITE,0,0,0);
if(lpData==NULL)
{
CloseHandle(hMap);
hMap =NULL;
return;
}
SData Data;
Data.m_name=6;
Data.m_data=true;
memcpy(lpData,(LPBYTE)(&Data),iLengByte);
}读取内存映射内容代码
SData data;
//打开内存映射文件
HANDLE m_hMap=OpenFileMapping(FILE_MAP_READ,FALSE,"S_DATA");
if (m_hMap==NULL) return;
//得到映射文件的地址
LPBYTE lpData=(LPBYTE)MapViewOfFile(m_hMap,FILE_MAP_READ,0,0,0);
if (lpData==NULL)
{
CloseHandle(m_hMap);
m_hMap=NULL;
return;
}
//得到映射文件中的数据
memcpy(&data,(SData*)(lpData),sizeof(SData));
int m_temp=data.m_name;
BOOL m_temp1=data.m_data;
CString ttt;
ttt.Format("%d",m_temp);
MessageBox(ttt);以上代码在VC++ 6.0中可以使用,现在我想把读取内存映射内容的代码改用vb代码。
不知道该怎样写.希望可以回复vb代码.谢谢.
关于进程或线程间通信(利用内存映射)vc++ 6.0
最新推荐文章于 2019-05-18 20:40:10 发布