1

共通メソッド foo() は、2 つの DLL A.dll と B.dll で定義されています。プロセス proc.exe が両方の DLL をロードし、2 つのスレッドから同時に foo() メソッドを呼び出す場合。foo() が実行時にどの DLL A.dll または B.dll からロードされたかを知る方法はありますか? ロギング目的でこの情報が必要です。インターネット上で関連するものを見つけることができませんでした。

GetModuleFileName()は、DLL 名ではなくプロセス名 proc.exe を返します。

4

3 に答える 3

1

foo が配置されているアドレスと、各 dll がロードされているアドレス範囲を見つけることができます。Foo は 2 つのアドレス範囲のいずれかにある必要があります。dll がロードされている場所を確認するには、「C++ のプロセスでロードされた DLL のメモリ アドレスを検索する」を確認してください。リンクに記載されている MODULEINFO 構造は、開始アドレスとサイズを提供します。

于 2013-08-22T07:06:25.043 に答える
1

コールスタック (少なくとも MS Visual Studio では) は正確にそれを伝えていませんか? (レピュテ​​ーション制限のため、コメントを書くことができません)

于 2013-08-22T06:58:22.153 に答える