コード例 #1
0
        public bool Match(FileEvents FileEvent)
        {
            var Result = WatchInfo.Find(
                Info => Info.Enabled &&
                FileEvent.Type == Info.Type &&
                FileEvent.Name.Contains(Info.Filter));

            return(Result != null);
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: hotoke001/Cxbx-Reloaded
            public void OnFileWrite(DebuggerMessages.FileWrite Info)
            {
                var Found = frm.FileHandles.Find(FileInfo => FileInfo.Handle == Info.Handle);

                if (Found != null)
                {
                    frm.DebugLog(string.Format("Writing {0} byte(s) to: {1}", Info.Length, Found.FileName));
                    frm.DebugFileEvent(FileEvents.Write(Found.FileName, Info.Length, Info.Offset));
                }
            }
コード例 #3
0
            public void OnFileRead(DebuggerMessages.FileRead Info)
            {
                var Found = frm.FileHandles.Find(FileInfo => FileInfo.Handle == Info.Handle);

                if (Found != null)
                {
                    frm.DebugLog($"Reading {Info.Length} byte(s) from: {Found.FileName}");
                    frm.DebugFileEvent(FileEvents.Read(Found.FileName, Info.Length, Info.Offset));
                }
            }
コード例 #4
0
ファイル: Form1.cs プロジェクト: hotoke001/Cxbx-Reloaded
            public void OnFileClosed(DebuggerMessages.FileClosed Info)
            {
                var Found = frm.FileHandles.Find(FileInfo => FileInfo.Handle == Info.Handle);

                if (Found != null)
                {
                    frm.FileHandles.Remove(Found);

                    frm.DebugFileEvent(FileEvents.Closed(Found.FileName));

                    frm.DebugLog(string.Format("Closed file: \"{0}\"", Found.FileName));
                }
            }
コード例 #5
0
ファイル: Form1.cs プロジェクト: hotoke001/Cxbx-Reloaded
            public void OnFileOpened(DebuggerMessages.FileOpened Info)
            {
                if (Info.Succeeded)
                {
                    frm.FileHandles.Add(Info);
                    frm.DebugLog(string.Format("Opened file: \"{0}\"", Info.FileName));

                    frm.DebugFileEvent(FileEvents.Opened(Info.FileName));
                }
                else
                {
                    frm.DebugLog(string.Format("Opened file FAILED: \"{0}\"", Info.FileName));

                    frm.DebugFileEvent(FileEvents.OpenedFailed(Info.FileName));
                }
            }
コード例 #6
0
ファイル: Form1.cs プロジェクト: hotoke001/Cxbx-Reloaded
        private void DebugFileEvent(FileEvents Event)
        {
            Invoke(new MethodInvoker(delegate()
            {
                lvFileDetails.BeginUpdate();
                {
                    var lvi = lvFileDetails.Items.Insert(0, Event.Type.ToString());
                    lvi.SubItems.Add(Event.Name);

                    switch (Event.Type)
                    {
                    case FileEventType.Read:
                    case FileEventType.Write:
                        string text = string.Format("{0} bytes", Event.Length.ToString());

                        if (Event.Offset != uint.MaxValue)
                        {
                            text += string.Format(" from offset {0}", Event.Offset);
                        }

                        lvi.SubItems.Add(text);
                        break;

                    case FileEventType.FailedOpen:
                        lvi.SubItems.Add("Failed to open file");
                        break;
                    }
                }
                lvFileDetails.EndUpdate();

                switch (Event.Type)
                {
                case FileEventType.Opened:
                case FileEventType.Closed:
                case FileEventType.FailedOpen:
                    {
                        lbOpenedFiles.BeginUpdate();
                        lbOpenedFiles.Items.Clear();

                        foreach (DebuggerMessages.FileOpened FOpen in FileHandles)
                        {
                            lbOpenedFiles.Items.Add(FOpen.FileName);
                        }

                        lbOpenedFiles.EndUpdate();
                    }
                    break;
                }
            }));

            // TODO: Move to breakpoint manager
            if (fileWatchMan.Match(Event))
            {
                if (DebuggerInst != null)
                {
                    Invoke(new MethodInvoker(delegate()
                    {
                        Suspend("file open");
                    }));
                }
            }
        }