2010-11-18 29 views
1

J'ai besoin de trouver le bon fichier .dll/.exe d'où la fonction énumérée. Pour cela j'utilise get_libraryName qui pour moi doit renvoyer le nom de fichier (.dll/.exe) dans lequel la fonction a été définie à l'origine.Pourquoi le symbole DIA SDK get_libraryName renvoie NULL pour IDiaSymbol?

Mais il retourne à chaque fois NULL (BadPtr = 0x00000) .. Y a-t-il un moyen de sortir le nom exact du fichier où la fonction a été définie et utilisée?

Cordialement Hassan

+0

Eh bien, ce que d'autres informations ne vous donne DIA sur les fonctions pour lesquelles cela se produit? Pour commencer, quels sont les noms de ces fonctions? – SamB

Répondre

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

Hope this helps!