Почему символ get_libraryName DIA SDK возвращает значение NULL для IDiaSymbol?

Мне нужно найти правильный.dll/.exe, откуда перечислила функция. Для этого я использую get_libraryName, который мне должен вернуть имя файла (.dll/.exe), в котором функция была первоначально определена.

Но он возвращается каждый раз, когда NULL(BadPtr=0x00000). Есть ли какой-нибудь выход для получения точного имени файла, из которого функция была определена и использована?

С уважением Хасан

1 ответ

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;
}

Надеюсь это поможет!

Другие вопросы по тегам