Exemplo n.º 1
0
 private void headingCol_OnDeleteClick(object sender, EventArgs e)
 {
     VisualSession[] sessions = new VisualSession[selectedSessions.Keys.Count];
     selectedSessions.Keys.CopyTo(sessions, 0);
     selectedSessions.Clear();
     DeleteSessions(sessions);
 }
Exemplo n.º 2
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            VisualSession session = GetVisualSessionAtCoordinates(e.X, e.Y);

            if (session == null)
            {
                return;
            }

            if (!selectedSessions.ContainsKey(session))
            {
                selectedSessions[session] = true;
            }
            else
            {
                selectedSessions.Remove(session);
            }

            headingBitmap = GetHeadingBitmap();
            Invalidate();
        }
Exemplo n.º 3
0
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);

            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            ctxMenuCurSession = GetVisualSessionAtCoordinates(e.X, e.Y);
            if (ctxMenuCurSession == null)
            {
                return;
            }

            ContextMenuStrip menu = new ContextMenuStrip();
            ToolStripItem    item = new ToolStripMenuItem("Delete selected", null, new EventHandler(headingCol_OnDeleteClick));

            menu.Items.Add(item);
            item.Enabled = (selectedSessions.Count > 0);
            menu.Show(this, e.X, e.Y);
        }
Exemplo n.º 4
0
        private void VisualizeDump (Dump dump)
        {
            Dictionary<uint, VisualSession> sessions = new Dictionary<uint,VisualSession> ();

            foreach (KeyValuePair<uint, Event> pair in dump.Events)
            {
                Event ev = pair.Value;

                // HACK #1
                //if (ev.ThreadId != 7028 && ev.ThreadId != 3152)
                //    continue;
                //else if (ev.ThreadId == 7028 && ev.Id < 138)
                //    continue;
                if (ev.Id > 2200)
                    continue;

                VisualSession session;

                if (sessions.ContainsKey (ev.ThreadId))
                    session = sessions[ev.ThreadId];
                else
                {
                    session = new VisualSession (String.Format ("{0}", ev.ThreadId));
                    sessions[ev.ThreadId] = session;
                }

                VisualTransaction tr = null;

                XmlElement eventRoot = ev.Data;
                XmlNode node = eventRoot.SelectSingleNode ("/event/name");
                if (node != null)
                {
                    string[] tokens = node.InnerText.Trim ().Split (new string[] { "::" }, 2, StringSplitOptions.None);
                    string funcNameShort = tokens[tokens.Length - 1];

                    if (funcNameShort == "DeviceIoControl")
                    {
                        tr = CreateTransactionFromDeviceIoControl (ev, eventRoot);
                    }
                    else if (funcNameShort == "GetOverlappedResult")
                    {
                        tr = CreateTransactionFromGetOverlappedResult (ev, eventRoot);
                    }
                    else if (funcNameShort == "KsCreatePin")
                    {
                        tr = CreateTransactionFromKsCreatePin (ev, eventRoot);
                    }
                    else if (funcNameShort == "KsOpenDefaultDevice")
                    {
                        tr = CreateTransactionFromKsOpenDefaultDevice (ev, eventRoot);
                    }
                    else if (funcNameShort == "CloseHandle")
                    {
                        tr = CreateTransactionFromCloseHandle (ev, eventRoot);
                    }
                    else
                    {
                        tr = new VisualTransaction (ev.Id, TransactionDirection.In, ev.Timestamp);
                        tr.HeadlineText = funcNameShort;
                        tr.AddHeaderField ("Id", ev.Id);
                    }
                }
                else
                {
                    tr = new VisualTransaction (ev.Id, ev.Timestamp);
                    tr.HeadlineText = String.Format ("<{0}>", ev.Type);
                    tr.AddHeaderField ("Id", ev.Id);

                    if (ev.Type == DumpEventType.AsyncResult)
                    {
                        uint requestEventId = Convert.ToUInt32 (eventRoot.SelectSingleNode ("/event/requestId").InnerText);
                        tr.AddHeaderField ("RequestId", requestEventId);

                        if (pendingReadStreamRequests.ContainsKey (requestEventId))
                        {
                            pendingReadStreamRequests.Remove (requestEventId);

                            XmlNode dataNode = eventRoot.SelectSingleNode ("/event/data/value");
                            tr.BodyText = KsReadStreamDataToString (dataNode, "out");
                        }
                    }
                }

                if (tr != null)
                    session.Transactions.Add (tr);
            }

            VisualSession[] sessionsArray = new VisualSession[sessions.Count];
            sessions.Values.CopyTo (sessionsArray, 0);
            view.Sessions = sessionsArray;

            pendingReadStreamRequests.Clear ();
        }
Exemplo n.º 5
0
 private void headingCol_OnDeleteClick(object sender, EventArgs e)
 {
     VisualSession[] sessions = new VisualSession[selectedSessions.Keys.Count];
     selectedSessions.Keys.CopyTo(sessions, 0);
     selectedSessions.Clear();
     DeleteSessions(sessions);
 }
Exemplo n.º 6
0
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);

            if (e.Button != MouseButtons.Right)
                return;

            ctxMenuCurSession = GetVisualSessionAtCoordinates(e.X, e.Y);
            if (ctxMenuCurSession == null)
                return;

            ContextMenuStrip menu = new ContextMenuStrip();
            ToolStripItem item = new ToolStripMenuItem("Delete selected", null, new EventHandler(headingCol_OnDeleteClick));
            menu.Items.Add(item);
            item.Enabled = (selectedSessions.Count > 0);
            menu.Show(this, e.X, e.Y);
        }
Exemplo n.º 7
0
        public void DeleteSessions(VisualSession[] sessions, bool update)
        {
            foreach (VisualSession session in sessions)
            {
                foreach (VisualTransaction transaction in session.Transactions)
                {
                    transaction.Parent = null;
                    //transaction.Left = 0;
                    //transaction.Top = 0;
                    //transaction.SizeChanged -= transactionSizeChangedHandler;
                    //transaction.DoubleClick -= transactionDoubleClickHandler;
                }

                this.sessions.Remove(session);
            }

            if (update)
            {
                UpdateView();
                EmitSessionsChanged();
            }
        }
Exemplo n.º 8
0
 public void DeleteSessions(VisualSession[] sessions)
 {
     DeleteSessions(sessions, true);
 }
Exemplo n.º 9
0
        public void AddSessions(VisualSession[] sessions, bool update)
        {
            this.sessions.AddRange(sessions);

            EmitSessionsChanged();

            foreach (VisualSession session in sessions)
            {
                foreach (VisualTransaction transaction in session.Transactions)
                {
                    transaction.Parent = null;
                    transaction.Left = 0;
                    transaction.Top = 0;
                    transaction.SizeChanged += transactionSizeChangedHandler;
                    transaction.DoubleClick += transactionDoubleClickHandler;
                }
            }

            if (update)
            {
                UpdateView();
                EmitSessionsChanged();
            }
        }
Exemplo n.º 10
0
 public void AddSessions(VisualSession[] sessions)
 {
     AddSessions(sessions, true);
 }