sharedata.~pas

来自「破解“国际领先的Nprotect键盘加密技术”」· ~PAS 代码 · 共 73 行

~PAS
73
字号
unit ShareData;

interface
uses windows,Common;

type
  PGlobalDllData = ^TGlobalDllData;
  TGlobalDllData = record
     CfgFileName : String[255];
  end;

procedure CreateShareData;
procedure OpenShareData;
procedure CloseShareData;
function  GetShareData : PGlobalDllData;
  
implementation

var
  GlobalData: PGlobalDllData = nil; //这是一个全局变量,指向创建的内存映射文件。
  MapHandle: THandle;

procedure CreateShareData;
var
  size: integer;
begin
  size := sizeof(TGlobalDllData);
  mapHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, size, DllShare);
  if mapHandle = 0 then Exit;
  GlobalData := MapViewOfFile(mapHandle, File_map_all_Access, 0, 0, size);
  if GlobalData = nil then
  begin
    CloseHandle(MapHandle);
    //RaiseLastWin32Error;
  end;
end;

procedure OpenShareData;
var
  size: integer;
begin
  size := sizeof(TGlobalDllData);
  mapHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, DllShare);
  if mapHandle = 0 then Exit;
  GlobalData := MapViewOfFile(mapHandle, File_map_all_Access, 0, 0, size);
  if GlobalData = nil then
  begin
    CloseHandle(MapHandle);
    //RaiseLastWin32Error;
  end;
end;

function GetShareData : PGlobalDllData;
begin
  if not Assigned(GlobalData) then
    Result := nil
  else
    Result := GlobalData;  
end;

procedure CloseShareData; 
begin
  if Assigned(GlobalData) then begin
     UnMapViewOfFile(GlobalData);
     CloseHandle(MapHandle);
     MapHandle := 0;
  end;
  if MapHandle <> 0 then
     CloseHandle(MapHandle);
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?