Sto avendo un sacco di problemi nel gestire una DLL che ho scritto in Delphi. Ho installato una funzione DllMain utilizzando il seguente codice nella libreria:Delphi DllMain DLL_PROCESS_DETACH chiamato prima DLL_PROCESS_ATTACH
begin
DllProc := DllMain;
end.
mia procedura DllMain
si presenta così:
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;
Quello che sto trovando è che si staccano sembra di essere chiamato (due volte ?!) da un chiamante (che non controllo) prima che sia mai stato chiamato ATTACH. E 'anche possibile, o sto fraintendendo come dovrebbe funzionare? La mia aspettativa sarebbe che ogni chiamata ATTACH sarebbe soddisfatta con una chiamata DETACH corrispondente, ma non sembra essere il caso.
Cosa sta succedendo qui ?!
Hmm ... Speravo che questa sarebbe stata la soluzione a tutti i miei problemi, ma questa conoscenza aggiuntiva (anche se vera e rispondendo alla mia domanda) non ha ancora risolto i miei problemi. Sembra che dovrò creare un'altra domanda :). Grazie per l'aiuto! – aardvarkk
Cosa non capisci. È tutto qui giusto in questa domanda. L'unica chiamata di DllMain che si verifica prima dell'esecuzione del codice è per 'DLL_PROCESS_ATTACH'. Quindi lo scrivi come dice Sertac e va tutto bene. –
No, questo è completamente chiaro. Capisco e potrei implementarlo. Ha rivelato, tuttavia, che la risposta al mio problema più grande (che speravo fosse collegato a questo), non è in realtà collegata a questo problema. Quindi la ricerca continua! – aardvarkk