public bool Match(FileEvents FileEvent) { var Result = WatchInfo.Find( Info => Info.Enabled && FileEvent.Type == Info.Type && FileEvent.Name.Contains(Info.Filter)); return(Result != null); }
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)); } }
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)); } }
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)); } }
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)); } }
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"); })); } } }