Delphi 共享内存的应用


本文整理自网络,侵删。

 
//建立共享内存 参数1:共享内存名 参数2:块大小 返回 句柄  
Function CreateShareMem(pName:Pchar;Size:Cardinal):Cardinal;  
begin  
  Result:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,Size,pName);  
end;  
  
//释放共享内存  参数:句柄  
Procedure FreeShareMem(hMapFile:Cardinal);  
var  
  pBuffer:Pointer;  
begin  
  pBuffer:=MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0);  
  if pBuffer <> nil then  
    UnmapViewOfFile(pBuffer);  
  if hMapFile <> 0 then  
    CloseHandle(hMapFile);  
end;  
  
  
{读取共享内存数据 
 参数1:共享内存名 
 参数2:存放数据缓存 
 参数3:读取长度 
 返回:成功返回true 
}  
Function ReadShareMem(pName:PChar;var Buffer;Len:Cardinal):Bool;  
var  
  hMapFile:Cardinal;  
  pBuf:Pointer;  
begin  
  Result:=False;  
  hMapFile:=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,pName);  
  if hMapFile <> 0 then  
    begin  
       pBuf:=MapViewOfFile(hMapFile,FILE_MAP_READ,0,0,0);  
       if pBuf <> nil then  
         begin  
           CopyMemory(@Buffer,pBuf,Len);  
           Result:=True;  
         end;  
       CloseHandle(hMapFile);  
    end;  
end;  
  
  
{写入共享内存 
 参数1:共享内存名 
 参数2:数据指针 
 参数3:长度 
 返回:成功返回true 
}  
Function WriteShareMem(pName:PChar;Buffer:Pointer;Len:Cardinal):Bool;  
var  
  hMapFile:Cardinal;  
  pBuf:Pointer;  
begin  
  Result:=False;  
  hMapFile:=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,pName);  
  if hMapFile <> 0 then  
    begin  
       pBuf:=MapViewOfFile(hMapFile,FILE_MAP_WRITE,0,0,0);  
       if pBuf <> nil then  
         begin  
           CopyMemory(pBuf,Buffer,Len);  
           Result:=True;  
         end;  
       CloseHandle(hMapFile);  
    end;  
end;  

可以用于进程间的通讯

相关阅读 >>

win7下使用Delphi7的方法

Delphi 缓冲文件流-tbufferedfilestream tfilestream 性能测试

Delphi 获取当前鼠标指针位置文本

Delphi dbgrid中实现copy、paste功能

Delphi实现解析百度搜索结果link?url=

Delphi 中相对路径与绝对路径函数

Delphi copyfileprogressbar 拷贝文件显示进度条

Delphi用命令行加载驱动

Delphi repeat 递增/递减输出

Delphi中使用goo.gl(google的缩短url服务)api

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...