/// <summary> /// Get/create the modules dictionary. /// </summary> protected override Dictionary <ulong, IModule> GetModulesInner() { var modules = new Dictionary <ulong, IModule>(); HResult hr = _debuggerServices.GetNumberModules(out uint loadedModules, out uint unloadedModules); if (hr == HResult.S_OK) { for (int moduleIndex = 0; moduleIndex < loadedModules; moduleIndex++) { hr = _debuggerServices.GetModuleInfo(moduleIndex, out ulong imageBase, out ulong imageSize, out uint timestamp, out uint checksum); if (hr == HResult.S_OK) { hr = _debuggerServices.GetModuleName(moduleIndex, out string imageName); if (hr < HResult.S_OK) { Trace.TraceError("GetModuleName({0}) {1:X16} FAILED {2:X8}", moduleIndex, imageBase, hr); } var module = new ModuleFromDebuggerServices(this, moduleIndex, imageName, imageBase, imageSize, (uint)imageSize, timestamp); if (!modules.TryGetValue(imageBase, out IModule original)) { modules.Add(imageBase, module); } else { Trace.TraceError("Duplicate imageBase {0:X16} new {1} original {2}", imageBase, imageName, original.FileName); } } else { Trace.TraceError("GetModuleInfo({0}) FAILED {1:X8}", moduleIndex, hr); } } } else { Trace.TraceError("GetNumberModules() FAILED {0:X8}", hr); } return(modules); }