一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写:
: V; n2 ~- {% @/ _) L! p3 ?$ U$ rHANDLE GetShare(char * &ShareP,int size,char *ShareName) 2 A }: [' @# n! U( |! b7 L4 G
{
% R4 m0 o2 @- e `1 _( \' Z' r8 t//ShareP申请的内存块地址,size字节数,ShareName共享名 6 Q5 R M& v4 b1 P6 _, G% ~4 {
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName); ! j5 r6 [2 q' M* W7 N
ShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
2 |! T* b9 g5 A- kif(GetLastError()!=ERROR_ALREADY_EXISTS)
2 a& [) i9 N* \2 S; g* W0 IZeroMemory(ShareP,size); // 共享区初始化
* O9 g) k) L5 z8 yreturn(fh); . A, W4 Z6 q" ]# n! O: ^$ \0 ]3 c
} 4 |# Q# d% T+ i8 n8 e
char * ShareP=NULL;
/ C( _5 `1 K, ^# m* }7 n9 {3 Qvoid test() // 申请一块128个字节的字符数组
; m. M" F4 V3 S T+ \! }{
6 c: |$ A. W/ i6 f4 t7 K3 l6 r' [HANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
9 i$ Y- o# j9 hfor (int i=0;i<128;i++)
- [3 \; ~5 V1 G8 ~ShareP=i; 0 O. P9 P" _& G1 o6 o
CloseHandle(fh);
e! O+ E# d, z$ w}
/ M, ?) P- H+ D如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。 |