Cで記述されたアンマネージDLLから関数を呼び出す.NETアセンブリがあります(CLRサポートなし)。アンマネージDLLがコードを呼び出すアセンブリを判別する方法はありますか?アンマネージDLLでCLRサポートを有効にしない方法を探しています。
質問する
114 次
1 に答える
1
いいえ、ネイティブコードでスタックウォークを安全に実行することはできません。これはマネージコードでのみ可能であり、スタックフレームレイアウトの保証を提供します。ガベージコレクターとCASチェックに必要です。Cコンパイラには、そのような保証を削除するオプティマイザがあります。言語がスタックウォークをサポートしておらず、必要としないため、それらは可能です。
オプティマイザーのチューニングを解除しても、ピンボークマーシャラーのスタックフレームをウォークスルーし、ジャストインタイムで生成されたマシンコードの推測されたアドレスをアセンブリにマッピングするという重大な障害があります。それを行う方法を知っているのはCLRだけです。この作品を作ることはできません。
于 2013-02-13T18:13:49.773 に答える