一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写:
8 A7 T9 X: W, d5 `+ S% WHANDLE GetShare(char * &ShareP,int size,char *ShareName)
4 K7 |+ a: k3 D{ ) {( `; `! L1 W
//ShareP申请的内存块地址,size字节数,ShareName共享名 ' B: f+ D3 g) _6 I& H0 X
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
$ Z' {1 e/ k: ]& z. H% [$ |4 b% }; F; LShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); , d# O n* Z N1 w
if(GetLastError()!=ERROR_ALREADY_EXISTS) : P- x3 M& m) f1 |& M+ {
ZeroMemory(ShareP,size); // 共享区初始化
5 H: L2 M: _9 ]8 Yreturn(fh);
& t" \! {- [7 _) k- t% y} # O( r% C2 g- V
char * ShareP=NULL;
7 `; X' R& m4 U! U* x- H$ Ivoid test() // 申请一块128个字节的字符数组 ( |" P* u: x& y8 _8 J( P
{
8 |% Y- h4 j& g8 ^0 Q) ~5 ~# bHANDLE fh=GetShare(ShareP,128,"ShareForMyProg"); 5 E. x5 @4 _1 B
for (int i=0;i<128;i++) 9 i- b( b+ j: N; g7 T
ShareP=i;
, _0 n7 z3 ~! g( z% G: X% D7 eCloseHandle(fh);
* c2 v5 N+ m" A5 B! e& j! K}
3 F3 _, y1 W5 J0 o如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |