请教进程间通信问题
如何利用共享内存,实现进程间通信?请高手指教!
Thanks!
问题点数:20、回复次数:4Top
1 楼Fnoopy(编得程序,抱得美女。)回复于 2002-04-08 20:40:33 得分 0
《windows核心编程》看吧。Top
2 楼horizon_tj(地平线)回复于 2002-04-08 20:57:43 得分 0
共享数据段,或者内存映射文件Top
3 楼copy_paste(木石三)回复于 2002-04-08 21:16:45 得分 0
CreateEvent,
WaitForSingleObject
ResetEvent
Semaphore, Mutex
CreateMapFile
SendMessageTop
4 楼zhougaomin_007(风之力量)回复于 2002-04-08 21:27:29 得分 20
#define MUST_SHARE_BUFFER_SIZE 1024 //共享1K
#define NAME_OF_FILEMAP "NAME001" //文件映象名称,另一个进程必须使用同一名称
HANDLE hFileMapping;
hFileMapping = ::CreateFileMapping(
(HANDLE)0xffffffff,
(LPSECURITY_ATTRIBUTES)NULL,
PAGE_READWRITE,
0,//高位,因为是64位
MUST_SHARE_BUFFER_SIZE,
NAME_OF_FILEMAP );
char*pShareMemoryBaseAddress;
pShareMemoryBaseAddress = (char*)::MapViewOfFile(
hFileMapping ,
FILE_MAP_ALL_ACCESS,
0,0, //offset64位偏移量
MUST_SHARE_BUFFER_SIZE );
/*说明:在两个进程中调用完全相同,哪个进程先调用,
变先开辟了一块共享内存
现在两个进程都可以用pShareMemoryBaseAddress指针访问该共享内存*/
//测试 一个进程写入一些字符,另一进程读出显示:
//进程一写入代码:
CString str("Test1234567890");
memcpy(pShareMemoryBaseAddress ,(LPCTSTR)str,str.GetLength());
//进程二读出代码:
CString str;
str = (LPCTSTR)pShareMemoryBaseAddress;
AfxMessageBox(str);
调通后记得给分!Top




