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

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

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

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


person Hassan    schedule 18.11.2010    source источник
comment
Хорошо, а какую еще информацию вам дает DIA о функциях, для которых это происходит? Для начала, как называются эти функции?   -  person SamB    schedule 27.11.2010


Ответы (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;
}

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

person Raghupathi Kamuni    schedule 13.01.2011