一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: , {& c1 g" F6 ?& p$ l. W
HANDLE GetShare(char * &ShareP,int size,char *ShareName)
) ~; a ]- d% p- R$ Z% R. A{
: ~ h; v2 U9 J0 t( s2 D//ShareP申请的内存块地址,size字节数,ShareName共享名 % w1 X3 J1 [8 Z( @
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName); 4 |8 U6 T* L) Y& Z7 U, L
ShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
" X) d- o: N3 t- @. H! T, L4 Mif(GetLastError()!=ERROR_ALREADY_EXISTS) 9 X0 v9 D5 F& d1 G$ @& s h
ZeroMemory(ShareP,size); // 共享区初始化
: d6 ?( g* x) Y, a0 `% s! X! ireturn(fh);
0 M2 W; `) j7 B/ q" L5 G7 J} 6 X+ y* n/ I/ Q+ H
char * ShareP=NULL;
$ x2 n' x8 p: h% c. m S0 }void test() // 申请一块128个字节的字符数组
5 e, Z! f- }& u5 e( {+ ?0 i{
! M7 j9 E3 |" w: c y! H$ v0 _; KHANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
6 k* w; ^6 h, f" T) l3 Yfor (int i=0;i<128;i++) - A" v5 c& v. s4 n8 }
ShareP=i;
0 r; K- c4 X3 jCloseHandle(fh); * S6 n; X, G- i3 T6 ?9 A ^" Y: i
}
6 }9 C2 W0 H% U- B如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |