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