一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写:
, Y- u; R( v( i7 yHANDLE GetShare(char * &ShareP,int size,char *ShareName)
; v; U4 a+ @' U{
7 ?/ g' ^9 R1 K" ~9 P5 F//ShareP申请的内存块地址,size字节数,ShareName共享名
3 L- g7 t* p. f; ^, YHANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
1 L0 h( ^. H3 G0 BShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
" l, K3 b6 p7 O& l7 U1 Uif(GetLastError()!=ERROR_ALREADY_EXISTS) 2 u# D6 D" O- _6 s
ZeroMemory(ShareP,size); // 共享区初始化 ! z- H( s" A0 T; ~4 }$ [) l
return(fh);
- k; S( ?6 |! k8 F0 T3 W} # t j* o9 M @" c" k
char * ShareP=NULL;
( Y g- d% S+ G; }( Z% w( Pvoid test() // 申请一块128个字节的字符数组 1 X K# U( f/ j% ^5 E+ M- z
{ 5 q3 j3 l: l% }+ ]! E7 N
HANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
' z# l9 A* x5 Ifor (int i=0;i<128;i++)
| q. v: ~0 U! FShareP=i; 4 M3 H' k4 `, q \) E( U8 @. A( |
CloseHandle(fh); $ y* _" l. U \
}
* T8 U; t1 ~* G% c; W8 x. _9 u如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |