![]() |
injected .dll destruktor
Hi
Die Frage mag etwa Blauäugig sein, aber gibt es bei eine .dll eine method um diese Sauber zu entladen? eine Art onclose oder eben einen Destruktor wenn FreeLibrary verwendet wird. Ich Injecte eine .dll in einen Fremden Prozess und möchte vor dem Entladen wieder alles aufräumen. Die einzige Möglichkeit wäre für mich wenn ich einen thread starte der auf eine Nachricht wartet und dann eben alle Resourcen wieder frei gibt ( threads schließt, code hooks entfernt usw..... ). Dann wieder Nachricht zurück dass alles entladen wurde und .dll frei geben. Aber schöner wäre es wenn das in der .dll möglich wäre - diese also bemerkt, dass sie entladen werden soll und damit vorher alles Frei gibt. lg Arnulf |
Re: injected .dll destruktor
Delphi-Quellcode:
müsste gehen.
uses
SysUtils, Classes, Windows; {$IFNDEF CONDITIONALDEFINE} // type def for Delphi 2-5 type TDLLProc = procedure(Reason: Integer); {$ENDIF} var DLLProcNext: TDLLProc; function InitTest():integer; stdcall; begin result:=0; end; procedure DLLMain(Reason: Integer); begin case Reason of DLL_PROCESS_ATTACH: begin DisableThreadLibraryCalls(hInstance); end; DLL_THREAD_ATTACH: ; DLL_THREAD_DETACH: ; DLL_PROCESS_DETACH: begin end; end; if Assigned(DLLProcNext) then DLLProcNext(Reason); end; exports InitTest; begin DLLProcNext := Pointer(InterlockedExchange(Integer(@DLLProc), Integer(@DLLMain))); DLLMain(DLL_PROCESS_ATTACH); end. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz