一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: : e6 Y4 s* J" H/ e
HANDLE GetShare(char * &ShareP,int size,char *ShareName)
, u# D% [0 d% k( D9 p& K6 P{
# J# {- P4 x" H" E+ l- a//ShareP申请的内存块地址,size字节数,ShareName共享名 + E1 y) D) _7 ^% T. J3 o
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
/ l4 ^# I. r0 A8 D3 X+ }; A0 FShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); - M* R K- c+ G3 ~
if(GetLastError()!=ERROR_ALREADY_EXISTS)
5 u9 z+ o6 N! R! e* E2 ?; f' {3 dZeroMemory(ShareP,size); // 共享区初始化 & x. ?/ J5 R& y/ d- d+ D
return(fh); " K" x. t0 |) y+ G
} , ]' [! T# W& T* r5 W, K% Q a
char * ShareP=NULL; ! C1 X; _$ A5 b
void test() // 申请一块128个字节的字符数组 / r# ^; a/ a& s7 s0 {0 [8 k2 T
{
r& H# D$ ~' q5 R# w+ h ?# G! GHANDLE fh=GetShare(ShareP,128,"ShareForMyProg"); 3 r1 h9 @1 Y3 J' z! N. q4 o/ r
for (int i=0;i<128;i++) 2 o6 Y e+ c- c# P+ N( z0 \
ShareP=i;
9 p2 |) y2 I% {* j N aCloseHandle(fh); ! u) S! m/ S3 l
}
6 e7 G( G( \. O- P l! c如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |