• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLLで初回呼び出しと最後のアンロードを認識可能?)

DLLで最初の呼び出しと最後のアンロードの認識可能性について

このQ&Aのポイント
  • DLLが最初に呼ばれた時と最後にアンロードされた時、DLL側で認識可能なのでしょうか?
  • 呼び元の処理も不特定多数から呼ばれるため、初期処理と終了処理のタイミングが取れない場合、参照カウントを利用できるのか?
  • ライブラリをリンクしていない場合でも参照カウントで管理されるのか?

質問者が選んだベストアンサー

  • ベストアンサー
  • A__
  • ベストアンサー率47% (22/46)
回答No.1

マルチスレッドのことはよく知りません。 LoadLibrary、FreeLibraryのことを書きます。 不用に何度もロードされた場合、そのロード回数をDLL内で知る方法は分からないです。 最初に呼び出された時だけ、DLL内のDllMainでDLL_PROCESS_ATTACHを受け取れます。 2度目以降の不要な呼び出しでは、内部でカウントされているらしいけど、その場合はDLL内のDllMainでDLL_PROCESS_ATTACHを受け取れません。 最後のアンロードを認識も、DLL内のDllMainでDLL_PROCESS_DETACHを受け取ることによって知ることができます。 内部で不要なロードのカウントがあった場合はDLL_PROCESS_DETACHを受け取れす、内部のカウントは1つ減らされるらしいです。

fruipa
質問者

補足

今回はクラスをエクスポートしたため、この方法の使い方がわかりませんでした。 このクラスをインポートされた時に、どこかでDLL_PROCESS_ATTACHが 発生していると思うのですが・・・。 また別の形で質問させて頂きます。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A