void IDiaSession.getSymbolsByAddr(out IDiaEnumSymbolsByAddr ppEnumbyAddr) { dynamic typ = null; if (!Dia3.StructCache.ContainsKey(loadAddress.ToString("x"))) { var json = SymAPI.FromAddress(loadAddress.ToString("x"), CV); typ = JsonConvert.DeserializeObject <SymNameInfo>(json.Result); Dia3.StructCache.TryAdd(loadAddress.ToString("x"), typ); } Dia3.StructCache.TryGetValue(loadAddress.ToString("x"), out typ); ppEnumbyAddr = new EnumSymbols(CV, EnumSymType.ByAddr, typ); return; }
void IDiaSession.findChildren(IDiaSymbol parent, SymTagEnum symTag, string name, uint compareFlags, out IDiaEnumSymbols ppResult) { dynamic typ = null; if (!Dia3.StructCache.ContainsKey(name)) { var json = SymAPI.TypeDef(name, CV); var converter = new Newtonsoft.Json.Converters.ExpandoObjectConverter(); var obj = JsonConvert.DeserializeObject <List <ExpandoObject> >(json.Result, converter); // we access just the first object back Dia3.StructCache.TryAdd(name, obj.First()); } Dia3.StructCache.TryGetValue(name, out typ); ppResult = new EnumSymbols(CV, EnumSymType.Sym, typ); return; }
void IDiaSymbol.findChildren(SymTagEnum symTag, string name, uint compareFlags, out IDiaEnumSymbols ppResult) { ppResult = new EnumSymbols(CV, EnumSymType.Sym, Master); return; }
public void Clone(out IDiaEnumSymbols ppenum) { ppenum = new EnumSymbols(CV, eType, Current) as IDiaEnumSymbols; return; }