一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: , L. P' I' B$ O7 K# N. o
HANDLE GetShare(char * &ShareP,int size,char *ShareName) . k) q* L) a3 Z5 A* {. ~/ S2 P9 U
{ 6 a4 v; z2 ^4 b" d; V
//ShareP申请的内存块地址,size字节数,ShareName共享名 9 S% F! E" i) V
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
2 [& s; Q6 A/ C) K! } T. yShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); " q0 h* j0 B6 ]
if(GetLastError()!=ERROR_ALREADY_EXISTS) 1 F* H H) C5 B& Y
ZeroMemory(ShareP,size); // 共享区初始化
; _2 P* b8 _' Z2 _return(fh); 6 Q+ `; k5 `2 A- g
}
* @; C. }4 ~; ychar * ShareP=NULL; : E' Z0 g8 N7 k' H
void test() // 申请一块128个字节的字符数组 # n% \5 a. ]2 s$ R/ C: x- C/ b
{
2 Q; J) ?. E. z: W1 d, m1 ? EHANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
( H# \9 b5 ^5 h- Mfor (int i=0;i<128;i++) 2 A7 N( j# w1 \
ShareP=i; 1 \1 X3 p3 V4 Z$ j R1 C
CloseHandle(fh);
6 J W& k7 Z- x} 5 ~) s* x$ z8 F& y3 @
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |