Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        void BirdieWatchObjectRemove(WatchBaseObject watchObject)
        {
            Dispatcher.Invoke(() =>
            {
                ProcessTabItem processTabItem = processDataToTabDictionary[watchObject.ProcessData];

                if (watchObject.GetType() == typeof(WatchMemoryObject))
                {
                    processTabItem.WatcherControl.MonitoredObjects.Remove((WatchMemoryObject)watchObject);
                }
            });
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }