2

関数が列挙された場所から正しい .dll/.exe を見つける必要があります。このために、関数が最初に定義されたファイル名(.dll/.exe)を返す必要があるget_libraryNameを使用しています。

しかし、毎回 NULL(BadPtr=0x00000) を返します。関数が定義および使用された場所から正確なファイル名を取得する方法はありますか?

よろしくハッサン

4

1 に答える 1

2
IDiaSession mSession;
DiaSourceClass mSourceClass;
IDiaSymbol mGlobalScope;
string pdbFileName = @"c:\test.pdb";

mSourceClass = new DiaSourceClass();
mSourceClass.loadDataFromPdb(pdbFileName);
mSourceClass.openSession(out mSession);
mSession.loadAddress = loadAddress; 
mGlobalScope = mSession.globalScope;

IDiaEnumSymbols methodSymbols;
mGlobalScope.findChildren(SymTagEnum.SymTagFunction, null, 0, out methodSymbols);
foreach (IDiaSymbol methodSymbol in methodSymbols)
{
     string projectName = functionSymbol.lexicalParent.name;
}

お役に立てれば !

于 2011-01-13T11:15:07.767 に答える