いくつかの関数を共有DLLに移動しています(Windowsフックとして呼びたいものがあります)。DLL内のdelphi finalizalizationコード
実際の機能は現在unit
にあり、何らかの形でinitialization
とfinalization
のコードがあります。
私は当初、unit
からlibrary
に直接変換することを考えていました。そこで私はbegin
とend.
の間にinitialization
コードを移動しました。しかし、私はfinalization
コードを移動する場所がないことに気付きました。代わりに特別なDLLエントリポイントを作成して登録する必要があります。
私の質問です。 unit
のすべての機能と、initialization
とfinalization
のコードを残して、uses
の単位を持つlibrary
スタブを作成するだけですか?それはfinalization
と呼ばれますか?
+1。要するに、ファイナライゼーションセクション*のコードが呼び出されますが、OSローダーロックのために、あなたはそれを望まないかもしれません。デッドロックの回避:ホストプロセスが呼び出すための明示的な初期化と終了関数をエクスポートする。 –
The Old New Thingが理由を説明します:http://blogs.msdn.com/b/oldnewthing/archive/2004/01/27/63401.aspx –
@Jeroen私はその記事にリンクするつもりでしたが、それは少しですキュレーターの卵とレイモンドがリンクしている記事は、MSリンクの腐敗によって食べられたように見えます。私が見つけた最高のリファレンスはhttp://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx –