一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: * h3 ~4 _% V* M) h/ @/ V2 d
HANDLE GetShare(char * &ShareP,int size,char *ShareName)
7 K4 y0 o- ~7 Y' {. S{
* J0 R/ \4 j. U//ShareP申请的内存块地址,size字节数,ShareName共享名
4 ], ]; ]' _, o, yHANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName); 1 n) i a% S- r
ShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); ( @+ X1 Q% t- D/ K
if(GetLastError()!=ERROR_ALREADY_EXISTS)
1 j& F# k! f2 F4 fZeroMemory(ShareP,size); // 共享区初始化 " _. y4 ? Y7 E j& W: E
return(fh); , N+ x$ B5 \. C5 R. H2 d
} * g% v( j( R o% {
char * ShareP=NULL; 1 p+ l+ o& A1 @ P# v$ K. s
void test() // 申请一块128个字节的字符数组 ) p7 M' a- `. ^+ {& C! ^/ h3 R
{
6 w7 O, I2 I+ y4 G5 E: ^HANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
- h2 S# p6 {$ Bfor (int i=0;i<128;i++)
, n9 r- D# }0 `# z3 A; LShareP=i; / K" @2 D8 F/ v( @* w, k l
CloseHandle(fh); / z4 U. g/ X. ~, t( M
} 9 i/ t3 P: Y$ \8 Q5 u, v
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |