Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DLL nur Systemweit und automatisch Referenz holen (https://www.delphipraxis.net/75265-dll-nur-systemweit-und-automatisch-referenz-holen.html)

andimx 16. Aug 2006 21:12


DLL nur Systemweit und automatisch Referenz holen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle zuzsammen,

Wieder mal eine Frage aus der DLL Welt :-)
Ich hab 2 Programme die gleichzeitig auf eine DLL zugreifen müssen. Jetzt hab ich wirklich alles versucht, sogar das mit der DLL_ATTACH funktionen, etc.. aber die DLL wird pro Program jeweils geladen.

Anbei ein Screenshot mit dem Problem.

Gibt es eine Möglichkeit die DLL wirklich nur einmal zu laden und wenn die DLL entdeckt das sie bereits geladen worden ist, automatisch auf die schon geladene DLL zeigt.

Für die Programme sollte es keinen Unterschied machen. Ich will also sowas wie eine "Intelligente" DLL :-)

Grüße
Andi

Luckie 16. Aug 2006 21:16

Re: DLL nur Systemweit und automatisch Referenz holen
 
Sie wird auch nur einmal geladen. Und zwar einmal in den Speichern. Dann wird sie nur noch in den Adressraum der Prozesse gemappt, die sie laden. Dass sie natürlich deswegen auch im Adressraum der anderen Prozesse auftauchen ist klar.

andimx 16. Aug 2006 21:29

Re: DLL nur Systemweit und automatisch Referenz holen
 
Das hab ich jetzt schon mitbekommen.
Mein Problem ist jetzt folgendes: Intern ist ein Memory Stream (Klasse) in dem ich einen Namespace verwalte. Dieser soll jetzt beschrieben und gelesen werden und zwar von allen Applikationen gleichzeitig die lokal laufen und die DLL geladen haben.
Aber die beiden Applikationen sehen unterschiedliche Namespaces...

Jetzt die Frage. Wenn ich intern in die "initialization" sections die objekte kreiere, sind die dann Global gültig oder wird bei jedem Loadlibrary Befehl die DLL neu initialisiert??

Luckie 16. Aug 2006 22:03

Re: DLL nur Systemweit und automatisch Referenz holen
 
Zitat:

Zitat von andimx
Aber die beiden Applikationen sehen unterschiedliche Namespaces...

Klar, weil sie ja jeweils im Adressraum des Prozesses liegen, der die DLL geladen hat. Unter C mit dem VC gibt es den sogenannten Shared Memory (http://users.actcom.co.il/~choo/lupg...s/shared-mem.c). Mit Delphi lässt sich das nur sehr umständlich nachbilden. Du solltest eventuell in Erwägung ziehen die DLL mit dem VC zu schreiben.

Chewie 16. Aug 2006 22:08

Re: DLL nur Systemweit und automatisch Referenz holen
 
Zitat:

Zitat von Luckie
Unter C mit dem VC gibt es den sogenannten Shared Memory (http://users.actcom.co.il/~choo/lupg...s/shared-mem.c). Mit Delphi lässt sich das nur sehr umständlich nachbilden.


:shock: Wow, ich wusste gar nicht, dass VC unter Windows die POSIX-Calls beherrscht. Hast du das getestet?

andimx 16. Aug 2006 22:18

Re: DLL nur Systemweit und automatisch Referenz holen
 
Ok. Wenn die DLL jetzt einmal geladen ist, jeder Prozess aber seinen eigenen Prozessbereich sieht, dann kommen diese auch nie in die Quere oder?

Was ist mit der BORLNDMM.DLL und ShareMem Unit? Würde die eine Lösung bringen?

Luckie 16. Aug 2006 22:31

Re: DLL nur Systemweit und automatisch Referenz holen
 
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.

Chewie 16. Aug 2006 22:34

Re: DLL nur Systemweit und automatisch Referenz holen
 
Zitat:

Zitat von Luckie
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.

Auf welche Frage war das jetzt die Antwort? :shock:

brechi 16. Aug 2006 23:28

Re: DLL nur Systemweit und automatisch Referenz holen
 
Das was du amchen willst ist unter Delphi nicht möglich. Wird in 2 Prozessen die dll geladen, dann sind alle Variabeln etc unterscheidlich. Erzeugst du also einen Stream (Objekt) so existiert dieses nur in dem Prozess wo du es gemacht hast.
Willst du gemeinsame Daten nutzen, musst du es mit MemoryMappedFiles machen.

Luckie 16. Aug 2006 23:30

Re: DLL nur Systemweit und automatisch Referenz holen
 
Zitat:

Zitat von Chewie
Zitat:

Zitat von Luckie
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.

Auf welche Frage war das jetzt die Antwort? :shock:

Auf deine. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz