Exemplo n.º 1
0
        private void LoadProfileModules()
        {
            int[] counters = _profileHandle.Collect();
            Dictionary <IntPtr, int> modules = new Dictionary <IntPtr, int>();

            for (int i = 0; i < counters.Length; i++)
            {
                if (counters[i] != 0)
                {
                    IntPtr realAddress = this.GetAddress(i);
                    IntPtr baseAddress;

                    _kernelSymbols.GetModuleFromAddress(realAddress, out baseAddress);

                    if (!modules.ContainsKey(baseAddress))
                    {
                        modules.Add(baseAddress, 0);
                    }

                    modules[baseAddress]++;
                }
            }

            listModules.Items.Clear();

            foreach (var moduleBase in modules.Keys)
            {
                listModules.Items.Add(new ListViewItem(
                                          new string[]
                {
                    _kernelModules[moduleBase].BaseName,
                    modules[moduleBase].ToString("N0"),
                    _kernelModules[moduleBase].FileName
                })
                {
                    Tag = moduleBase
                }
                                      );
            }
        }