一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写:
S. [, p5 P* _! ~4 T, CHANDLE GetShare(char * &ShareP,int size,char *ShareName) ( a) m3 `2 i I2 |) d) `0 f
{
& {2 d' _; N8 U; A//ShareP申请的内存块地址,size字节数,ShareName共享名
* ~5 n$ X# g+ v$ d: D) GHANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
1 f8 ^. h5 b9 {$ cShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); + b: x' T8 u9 l6 i
if(GetLastError()!=ERROR_ALREADY_EXISTS) 9 v6 [0 A. i" F' o
ZeroMemory(ShareP,size); // 共享区初始化 " k+ _ l! Y3 F3 M
return(fh); & U# s' h X% D! w# S4 b7 L
} : E* }6 d& Q+ D8 p5 x0 M# D. A
char * ShareP=NULL;
1 B$ }1 ?1 X+ ?% ]void test() // 申请一块128个字节的字符数组 , G) B8 T$ e% @$ {, i! J4 q+ m
{ & J1 T6 Y9 @5 K! x
HANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
; ] D% x$ m/ m( f/ ofor (int i=0;i<128;i++)
: G m/ Z# m) u2 MShareP=i;
1 E6 f; L; c8 f. KCloseHandle(fh); 4 z8 |5 [7 W" c, H
} 8 _' ]5 d' B/ E+ c/ o: z: [' q3 r+ Z
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |