private void RemoveWatchBaseObject(ClientContext clientContext) { // Starting offset in 'data' int offset = sizeof(UInt32); // Remote processes don't have memory watching support, ignore their pleas if (clientContext.IsRemote) { return; } // RemoveWatch only uses 1 handle variable UInt32 handle = BitConverter.ToUInt32(clientContext.Data, offset); offset += sizeof(UInt32); // Get the watch object WatchBaseObject watchBaseObject = clientContext.ProcessData.RemoveAndGetWatchBaseObject(handle); if (watchBaseObject != null) { if (watchBaseObject.GetType() == typeof(WatchMemoryObject) && WatchMemoryObjectRemove != null) { WatchMemoryObjectRemove((WatchMemoryObject)watchBaseObject); } else if (watchBaseObject.GetType() == typeof(WatchCategoryObject) && WatchCategoryObjectRemove != null) { WatchCategoryObjectRemove((WatchCategoryObject)watchBaseObject); } } }
void BirdieWatchObjectRemove(WatchBaseObject watchObject) { Dispatcher.Invoke(() => { ProcessTabItem processTabItem = processDataToTabDictionary[watchObject.ProcessData]; if (watchObject.GetType() == typeof(WatchMemoryObject)) { processTabItem.WatcherControl.MonitoredObjects.Remove((WatchMemoryObject)watchObject); } }); }
public WatchBaseObject RemoveAndGetWatchBaseObject(UInt32 watchBaseObjectHandle) { if (watchBaseObjects.ContainsKey(watchBaseObjectHandle)) { WatchBaseObject watchBaseObject = watchBaseObjects[watchBaseObjectHandle]; watchBaseObjects.Remove(watchBaseObjectHandle); if (watchBaseObject.Parent == null) { RootWatchBaseObjects.Remove(watchBaseObject); } else { watchBaseObject.Parent.Children.Remove(watchBaseObject); } return(watchBaseObject); } return(null); }
public void AddWatchBaseObject(UInt32 categoryHandle, WatchBaseObject watchBaseObject) { if (categoryHandle == 0) { // No category, add to root rootWatchBaseObjects.Add(watchBaseObject); } else if (!watchBaseObjects.ContainsKey(categoryHandle)) { // Could not find the category object Debug.Assert(false); return; } else { WatchBaseObject watchObject = watchBaseObjects[categoryHandle]; watchObject.Children.Add(watchBaseObject); watchBaseObject.Parent = watchObject; } watchBaseObjects.Add(watchBaseObject.Handle, watchBaseObject); }