📄 dllmemu.pas
字号:
unit DllMemU;
interface
uses
Windows, SysUtils;
procedure SetData (I: Integer); stdcall;
function GetData: Integer; stdcall;
procedure SetShareData (I: Integer); stdcall;
function GetShareData: Integer; stdcall;
function GetViewStr(var pViewFlag:Integer): string;stdcall;
implementation
// global DLL data
var
PlainData: Integer = 0; // not shared
ShareData: ^Integer; // shared
hMapFile: THandle;
ViewStr :array[0..99] of string;
i:Integer;
View_Flag :Integer = 0;
const
VirtualFileName = 'ShareDllData';
DataSize = sizeof (Integer);
procedure SetData (I: Integer); stdcall;
begin
PlainData := I;
end;
function GetData: Integer; stdcall;
begin
Result := PlainData;
end;
// shared data read and write
procedure SetShareData (I: Integer); stdcall;
begin
ShareData^ := I;
end;
function GetShareData: Integer; stdcall;
begin
Result := ShareData^;
end;
function GetViewStr(var pViewFlag:Integer): string;stdcall;
begin
if pViewFlag < 99 then
begin
Result :=ViewStr[pviewflag];
ViewStr[pViewFlag] :='';
Inc(pViewFlag);
end
else
begin
pViewFlag :=0;
end;
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);
for i := Low(ViewStr) to High(ViewStr) do
ViewStr[i] :='test Str is' + IntToStr(i);
finalization
UnmapViewOfFile (ShareData);
CloseHandle (hMapFile);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -