Ich habe eine Menge Probleme mit einer DLL, die ich in Delphi geschrieben habe. Ich habe eine Funktion DllMain mit dem folgenden Code in der Bibliothek einzurichten:Delphi DllMain DLL_PROCESS_DETACH vor DLL_PROCESS_ATTACH aufgerufen
begin
DllProc := DllMain;
end.
Mein DllMain
Verfahren sieht wie folgt aus:
procedure DllMain(reason: Integer);
begin
if reason = DLL_PROCESS_DETACH then
OutputDebugString('DLL PROCESS DETACH')
else if reason = DLL_PROCESS_ATTACH then
OutputDebugString('DLL PROCESS ATTACH')
else if reason = DLL_THREAD_ATTACH then
OutputDebugString('DLL THREAD ATTACH')
else if reason = DLL_THREAD_DETACH then
OutputDebugString('DLL THREAD DETACH')
else
OutputDebugString('DllMain');
end;
Was ich Befund bin ist, dass DETACH genannt zu werden scheint (zweimal von einem Anrufer (den ich nicht kontrolliere), bevor ATTACH überhaupt angerufen wird. Ist das überhaupt möglich oder missverstehe ich, wie das funktionieren soll? Meine Erwartung wäre, dass jeder ATTACH-Aufruf mit einem passenden DETACH-Aufruf beantwortet würde, aber das scheint nicht der Fall zu sein.
Was geht hier los ?!
Hmm ... Ich hatte gehofft, dass dies die Lösung für all meine Probleme sein würde, aber dieses zusätzliche Wissen (obwohl es wahr ist und meine Frage beantwortet) hat meine Probleme noch nicht behoben. Sieht so aus, als müsste ich eine andere Frage stellen :). Danke für Ihre Hilfe! – aardvarkk
Was verstehst du nicht? Es ist alles hier in dieser Frage richtig. Der einzige Aufruf von DllMain, der auftritt, bevor Ihr Code ausgeführt werden kann, ist für 'DLL_PROCESS_ATTACH'. Du schreibst es einfach so, wie Sertac sagt, und alles ist gut. –
Nein, das ist völlig klar. Ich verstehe es und könnte es umsetzen. Es hat jedoch gezeigt, dass die Antwort auf mein größeres Problem (von dem ich hoffte, dass es damit zusammenhängt), in Wirklichkeit nicht mit diesem Problem zusammenhängt. So geht die Suche weiter! – aardvarkk