Logo New book: Delphi 2007 Handbook
My blog in online
Delphi tech support service: support.marcocantu.com
Google
  Web www.marcocantu.com

Menu for Development

Site Menu
Delphi 2007 Handbook
Mastering Borland Delphi 2005
Essential Pascal
Essential Delphi
Buy Books Online
Code Repository
Newsgroups
White Papers
Tools
Conferences
Training
Delphi Links
Contact Marco

My Other Sites
Italian Site (www.marcocantu.it)
Developers Newsgroups Browser (dev.newswhat.com)
My town (www.piazzacavalli.net)
the delphi search
Wintech Italia (my company)

Breaking News
Buy Mastering Borland Delphi 2005 from Amazon
Free ebook: Mastering Delphi Update for Delphi 2006

Advertising
Home My Blog Books My Bookstore Development Links Marco



Home: Code Repository: Mastering Delphi 5

Project DLLMEM

Project Structure


DLLMEM.DPR

library dllmem;

uses
  SysUtils,
  DllMemU in 'DllMemU.pas';

exports
  SetData, GetData,
  GetShareData, SetShareData;

end.

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;

implementation

// global DLL data
var
  PlainData: Integer = 0; // not shared
  ShareData: ^Integer; // shared
  hMapFile: THandle;

const
  VirtualFileName = 'ShareDllData';
  DataSize = sizeof (Integer);

// plain (non shared) data read and write

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;

initialization
  //create memory mapped file
  hMapFile := CreateFileMapping ($FFFFFFFF, nil,
    Page_ReadWrite, 0, DataSize, VirtualFileName);
  if hMapFile = 0 then
    raise Exception.Create ('Error creating memory mapped file');
  // get the pointer to the actual data
  ShareData := MapViewOfFile (
    hMapFile, File_Map_Write, 0, 0, DataSize);

finalization
  UnmapViewOfFile (ShareData);
  CloseHandle (hMapFile);
end.