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;  

可以用于进程间的通讯

相关阅读 >>

Delphi实现的sunday字符串搜索算法

Delphi窗体固定在桌面上

Delphi 合并文本行的函数

Delphi 根据窗口类判断程序是否运行

Delphi遍历进程并获取进程路径

shellexecute的多种用法

Delphi 中使用dialog api

Delphi 文件crc和md5校验

Delphi 通过读取注册表信息获取桌面路径

Delphi过滤一段字符里面的html代码的函数

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



打赏

取消

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

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

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

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

评论

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

    暂无评论...