Delphi で作成した DLL を扱うのに苦労しています。ライブラリで次のコードを使用して DllMain 関数を設定しました。
begin
DllProc := DllMain;
end.
私のDllMain
手順は次のようになります。
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;
私が見つけたのは、ATTACH が呼び出される前に、呼び出し元 (私が制御していない) によって DETACH が (2 回?!) 呼び出されたように見えることです。それは可能ですか、それともこれがどのように機能するかを誤解していますか? 私の予想では、すべての ATTACH 呼び出しが対応する DETACH 呼び出しで満たされると思いますが、そうではないようです。
ここで何が起こっているのですか?!