library dllmem;
uses
SysUtils,
DllMemU in 'DllMemU.pas';
exports
SetData, GetData,
GetShareData, SetShareData;
end.
|
unit DllMemU;
interface
uses
Windows, SysUtils;
procedure SetData (I: Integer); stdcall;
function GetData: Integer; stdcall;
procedure SetShareData (I: Integer); stdcall;
function GetShareData: Integer; stdcall;
implementation
var
PlainData: Integer = 0;
ShareData: ^Integer;
hMapFile: THandle;
const
VirtualFileName = 'ShareDllData';
DataSize = sizeof (Integer);
procedure SetData (I: Integer); stdcall;
begin
PlainData := I;
end;
function GetData: Integer; stdcall;
begin
Result := PlainData;
end;
procedure SetShareData (I: Integer); stdcall;
begin
ShareData^ := I;
end;
function GetShareData: Integer; stdcall;
begin
Result := ShareData^;
end;
initialization
hMapFile := CreateFileMapping ($FFFFFFFF, nil,
Page_ReadWrite, 0, DataSize, VirtualFileName);
if hMapFile = 0 then
raise Exception.Create ('Error creating memory mapped file');
ShareData := MapViewOfFile (
hMapFile, File_Map_Write, 0, 0, DataSize);
finalization
UnmapViewOfFile (ShareData);
CloseHandle (hMapFile);
end.
|