一个怪异的文件映射问题

guodown 2011-11-01 12:46:22
我客户端和服务端通信采用文件映射,客户端和服务端都是用下面的代码。不过出现了一个问题:我的服务端
是window服务,客户端是普通的应用程序,当客户端先启动使用MapFile创建文件映射时,一切正常,可是当服务端
先启动时,客户端再启动MapFile就失败了,如果两者同为普通应用程序,也没什么问题,是否是我的代码有错误,
又或者是服务造成的,各位给点建议,该怎么改?

function MapFile():BOOL;stdcall;
begin
Result:=True;
hMappingFile := OpenFileMapping(FILE_MAP_WRITE,False,MappingFileName);
if hMappingFile=0 then
begin
hMappingFile := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,SizeOf(TShareMem),MappingFileName);
end;
if hMappingFile=0 then
begin
Result:=False;
Exit;
end;
pShMem := MapViewOfFile(hMappingFile,FILE_MAP_WRITE or FILE_MAP_READ,0,0,0);
if pShMem = nil then
begin
Result:=False;
CloseHandle(hMappingFile);
Exit;
end;
end;
procedure UnMapFile();
begin
UnMapViewOfFile(pShMem);
CloseHandle(hMappingFile);
end;
...全文
138 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧