uses
  Windows,
  SysUtils,
  Dialogs,
  Classes;
var
  hObjData : THandle;
  PData    : Pointer;{$R *.RES}procedure UnmapData;//释放文件映射对象
begin
  if Assigned(PData) then
  begin
    UnmapViewOfFile(PData);
    PData := nil;
  end;
end;procedure MapData;//创建文件映射对象,建立映射关系
begin
  hObjData := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,$400,PChar('_ShareData)'));
  if hObjData=0 then
    Raise Exception.Create('创建文件映射对象没有成功!');
  PData := MapViewOfFile(hObjData,FILE_MAP_WRITE,0,0,1);
  if not Assigned(PData) then
  begin
    UnmapData;
    Raise Exception.Create('建立映射关系没有成功!');
  end;
end;
procedure DLLMain(dwReason:DWORD);
begin
  Case dwReason of
    DLL_PROCESS_ATTACH:
      begin
        PData := nil;
        hObjData := 0;
        MapData;
      end;
    DLL_PROCESS_DETACH:
      begin
        UnmapData;
      end;
  end;
end;function GetPointerOfData : Pointer;Stdcall;
begin
  Result := PData;
end;Exports
  GetPointerOfData,begin
  DLLProc := @DLLMain;
  DLLMain(DLL_PROCESS_ATTACH);
end.