Thema: Delphi DLL gewaltsam beenden

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#5

Re: DLL gewaltsam beenden

  Alt 3. Apr 2007, 20:29
Zitat von brechi:
Also eine Dll ist ja nur zusätzlicher Programmcode im Speicher. Der Macht ja nichts, ausser beim laden und ggf entladen etc. ein bisschen Code auszuführen.
Wenn du nun beim laden (zwischne begin und end.) einen Thread mit CreateThread erstellst und dieser in eine Endlosschleife hängt, dann kannst du den immernoch aus einem anderen Thread mit TerminateThread beenden. Die Dll ist aber weiterhin im Speicher.

Was du machen könntest wäre a) eine neue Bedingung in die Schleife einfügen, dass die doch irgendwann aml beendet, oder aber TerminateThread benutzen, und wenn du die Dll entladen willst danach einfach FreeLibrary. Das sollte kein Problem sein.
Danke erst mal für die Info.

Schleife einfach beenden geht nicht solange das Handle <> 0 ist wird beim ausführen
einer neuen DLL oder der gleichen unweigerlich ein AV auftreten.
Da diese nicht zweimal ausgeführt werden kann, oder eine neue solange das handle nicht 0 ist.

Dieses signalisiert mir das die DLL und das Window dieser terminiert wurde.
Ich sende der Dll ein Quit worauf diese ihren Thread Terminieren sollte ..
danach noch ein WM_DESTROY um sicher zustellen das kein Window mehr existiert.

Wenn handle = 0 dann ist alles ok
Danach wird die FreeLibrary aufgerufen und die DLL aus dem Speicher entfernt.
Aber soweit komme ich gar nicht da der Return Code des handle nicht immer 0 ist.

EDIT:
Die DLL macht sehr viel es geht hier um Winamp VisPlugins

Gruss Emil
  Mit Zitat antworten Zitat