diff --git a/trunk/ProcessHacker/Components/ProcessTree/ProcessNode.cs b/trunk/ProcessHacker/Components/ProcessTree/ProcessNode.cs index 55c924166..12572306c 100644 --- a/trunk/ProcessHacker/Components/ProcessTree/ProcessNode.cs +++ b/trunk/ProcessHacker/Components/ProcessTree/ProcessNode.cs @@ -136,7 +136,7 @@ namespace ProcessHacker public string PvtMemory { - get { return Misc.GetNiceSizeName(_pitem.MemoryUsage); } + get { return Misc.GetNiceSizeName(_pitem.Process.VirtualMemoryCounters.PrivateBytes); } } public string WorkingSet diff --git a/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs b/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs index 0834825b5..94ab85a95 100644 --- a/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs +++ b/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs @@ -294,11 +294,14 @@ namespace ProcessHacker { _treeModel.Modify(oldItem, newItem); - TreeNodeAdv node = this.FindTreeNode(newItem.PID); - - if (node != null) + if (newItem.FullUpdate) { - node.BackColor = GetProcessColor(newItem); + TreeNodeAdv node = this.FindTreeNode(newItem.PID); + + if (node != null) + { + node.BackColor = GetProcessColor(newItem); + } } if (_treeModel.GetSortColumn() != "") diff --git a/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs b/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs index 3bd2a4fa3..a07f2fd79 100644 --- a/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs +++ b/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs @@ -215,7 +215,8 @@ namespace ProcessHacker else if (sortC == "pid") return ModifySort(n1.PID.CompareTo(n2.PID), sortO); else if (sortC == "pvt. memory") - return ModifySort(n1.ProcessItem.MemoryUsage.CompareTo(n2.ProcessItem.MemoryUsage), sortO); + return ModifySort(n1.ProcessItem.Process.VirtualMemoryCounters.PrivateBytes.CompareTo( + n2.ProcessItem.Process.VirtualMemoryCounters.PrivateBytes), sortO); else if (sortC == "working set") return ModifySort(n1.ProcessItem.Process.VirtualMemoryCounters.WorkingSetSize.CompareTo( n2.ProcessItem.Process.VirtualMemoryCounters.WorkingSetSize), sortO); diff --git a/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs b/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs index 83876b0f1..66aa106b2 100644 --- a/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs +++ b/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs @@ -39,7 +39,6 @@ namespace ProcessHacker public float CPUUsage; public string FileName; public FileVersionInfo VersionInfo; - public long MemoryUsage; public string Name; public string Username; public Win32.SYSTEM_PROCESS_INFORMATION Process; @@ -51,7 +50,6 @@ namespace ProcessHacker public bool IsElevated; public bool IsInJob; public bool IsPacked; - public bool IsVirtualizationEnabled; public long LastTime; public int SessionId; public bool HasParent; @@ -65,6 +63,8 @@ namespace ProcessHacker public int ProcessingAttempts; public Win32.ProcessHandle ProcessQueryHandle; + + public bool FullUpdate; } public class ProcessSystemProvider : Provider @@ -423,7 +423,6 @@ namespace ProcessHacker item.PID = pid; item.LastTime = processInfo.KernelTime + processInfo.UserTime; - item.MemoryUsage = processInfo.VirtualMemoryCounters.PrivateBytes; item.Process = processInfo; item.SessionId = processInfo.SessionId; item.Threads = procs[pid].Threads; @@ -491,8 +490,6 @@ namespace ProcessHacker catch { } try { item.IsElevated = thandle.IsElevated(); } catch { } - try { item.IsVirtualizationEnabled = thandle.IsVirtualizationEnabled(); } - catch { } } } catch @@ -637,19 +634,19 @@ namespace ProcessHacker else { ProcessItem item = Dictionary[pid]; - ProcessItem newitem = new ProcessItem(); + ProcessItem newitem = item; - newitem = item; newitem.LastTime = processInfo.KernelTime + processInfo.UserTime; - newitem.MemoryUsage = processInfo.VirtualMemoryCounters.PrivateBytes; newitem.Process = processInfo; + newitem.FullUpdate = false; + newitem.JustProcessed = false; if (Win32.ProcessesWithThreads.ContainsKey(pid)) newitem.Threads = procs[pid].Threads; try { - newitem.CPUUsage = (float)(newitem.LastTime - item.LastTime) * 100 / + newitem.CPUUsage = (float)(newitem.LastTime - item.LastTime) * 100 / (sysKernelTime + sysUserTime + otherTime); if (newitem.CPUUsage > 400.0f) @@ -673,6 +670,7 @@ namespace ProcessHacker try { newitem.IsBeingDebugged = item.ProcessQueryHandle.IsBeingDebugged(); + newitem.FullUpdate = true; } catch { } @@ -688,25 +686,8 @@ namespace ProcessHacker } } - //if (item.TokenQueryHandle != null) - //{ - // try - // { - // newitem.IsVirtualizationEnabled = item.TokenQueryHandle.IsVirtualizationEnabled(); - // } - // catch - // { } - //} - newdictionary[pid] = newitem; - - if (newitem.IsBeingDebugged != item.IsBeingDebugged || - newitem.JustProcessed - ) - { - newitem.JustProcessed = false; - this.CallDictionaryModified(item, newitem); - } + this.CallDictionaryModified(item, newitem); } }