DllMemU.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:1k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit DllMemU;
  2. interface
  3. uses
  4.   Windows, SysUtils;
  5. procedure SetData (I: Integer); stdcall;
  6. function GetData: Integer; stdcall;
  7. procedure SetShareData (I: Integer); stdcall;
  8. function GetShareData: Integer; stdcall;
  9. implementation
  10. // global DLL data
  11. var
  12.   PlainData: Integer = 0; // not shared
  13.   ShareData: ^Integer; // shared
  14.   hMapFile: THandle;
  15. const
  16.   VirtualFileName = 'ShareDllData';
  17.   DataSize = sizeof (Integer);
  18. // plain (non shared) data read and write
  19. procedure SetData (I: Integer); stdcall;
  20. begin
  21.   PlainData := I;
  22. end;
  23. function GetData: Integer; stdcall;
  24. begin
  25.   Result := PlainData;
  26. end;
  27. // shared data read and write
  28. procedure SetShareData (I: Integer); stdcall;
  29. begin
  30.   ShareData^ := I;
  31. end;
  32. function GetShareData: Integer; stdcall;
  33. begin
  34.   Result := ShareData^;
  35. end;
  36. initialization
  37.   //create memory mapped file
  38.   hMapFile := CreateFileMapping ($FFFFFFFF, nil,
  39.     Page_ReadWrite, 0, DataSize, VirtualFileName);
  40.   if hMapFile = 0 then
  41.     raise Exception.Create ('Error creating memory mapped file');
  42.   // get the pointer to the actual data
  43.   ShareData := MapViewOfFile (
  44.     hMapFile, File_Map_Write, 0, 0, DataSize);
  45. finalization
  46.   UnmapViewOfFile (ShareData);
  47.   CloseHandle (hMapFile);
  48. end.