一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写:
; n, g5 J1 e" D* a' j5 M4 D: k9 \HANDLE GetShare(char * &ShareP,int size,char *ShareName)
- g# B* c8 v' u1 F' L! `{
5 Q! A5 M' Z$ d//ShareP申请的内存块地址,size字节数,ShareName共享名 . o, }9 S# J) M
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
6 X) v4 _' N W* vShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
5 ]1 F/ _% ]& J0 m0 Lif(GetLastError()!=ERROR_ALREADY_EXISTS) / A" I/ T7 G5 K3 p/ n- V( h
ZeroMemory(ShareP,size); // 共享区初始化
# p3 D6 x5 r( A) W$ S1 q; }return(fh);
8 O% A8 B$ p9 T$ W9 S" Y} ; ^ |6 v: J" Y
char * ShareP=NULL;
2 ~( l. G6 u$ p" \void test() // 申请一块128个字节的字符数组 4 H! T( h* z, @: k
{
1 [* w: P7 Y; u2 m3 ~HANDLE fh=GetShare(ShareP,128,"ShareForMyProg"); / ]0 E) Z$ G& ]4 w* {% G
for (int i=0;i<128;i++)
3 [- M% N8 e! e% x2 nShareP=i;
- `* f( n: P7 @6 C7 f2 wCloseHandle(fh);
! o( L- R1 J8 m" d, t- F5 N1 _} + X. O* U' g9 ^5 F
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |