一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: / V, V( b" b9 a; {
HANDLE GetShare(char * &ShareP,int size,char *ShareName) 4 q- q* }% b z1 \3 I
{ & r9 u4 w7 t( J" `! o6 }
//ShareP申请的内存块地址,size字节数,ShareName共享名
0 m0 T1 R9 E# Y( ^$ p3 a8 T; OHANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
. k6 n* b# ?- W0 xShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
" j% [ m5 K" {if(GetLastError()!=ERROR_ALREADY_EXISTS) 2 m) D; g+ c$ g2 r4 J: \5 a
ZeroMemory(ShareP,size); // 共享区初始化 ) t0 L6 P' h& V0 y
return(fh);
* J; s$ ~1 h6 ]/ J} " _; J/ ~- x D* n# k) V5 X
char * ShareP=NULL; 7 k! f& _5 Z% N* V- b5 U/ X* H: ?
void test() // 申请一块128个字节的字符数组 $ r/ f4 ~- a) g5 Q- a1 d: e
{
2 W! l0 W7 j) ~HANDLE fh=GetShare(ShareP,128,"ShareForMyProg"); ( c8 F4 T! O# t: R
for (int i=0;i<128;i++)
9 k; e2 ?0 E+ J0 x' gShareP=i;
7 u9 m; [) A' V& D' VCloseHandle(fh);
+ v' J/ c& Z$ m/ b3 U% K- F} , t2 H' e/ Q5 s K
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |