Nur weil der Programmcode der
DLL in einer MMF liegt, ist sie dennoch nicht "funktional" geshared, denn der sonstige arbeitspeicher bleibt dennoch getrennt.
PS:
DLL und EXE sind sowieso schon imm er (mindestens seit
WinNT) auf sowas ähnlichen, wie eine MMF verteilt, damit Windows sich den
RAM erspart, da diese dann nur einmal in den speicher geladen werden muß.
Allerdings mit der option CopyOnWrite ... also wenn eine anwendung was ändert, wird der Speicher kopiert, die anwendung bekommt das eigene Stück
RAM und bei den anderen bleibt es unverändert.
So, aber da dennoch der Speicher der restlichen Anwendungen getrennt ist, selbst wenn man die
DLL via MMF überall reingequetscht hat, wird sie dennoch im Kontext der Anwendungen ausgeführt
und "externe" Zeiger sind bleiben nur im entsprechenden Programmkontext gültig.
Der einzige Weg für sowas ist z.B. ein OutOfProcess-
COM-Server.
Dieser läuft in einem getrennten Prozess (meist einem
DLL-Host), die vielen Programme greifen via
COM-Lib auf dessen Funktionen zu, aber da die Funktionen in dem gemeinsam genutzen
DLL-Host laufen, haben alle wirklich mit der selben
DLL zu zun.
PS: Botschaften (Messages) werden ja an die anderen Prozesse gesendet und dann auch
dort drüben verarbeitet.