/// <inheritdoc /> public void AssignAlias(Snapshot snapshot, Memory.MemoryPath targetPath, Memory.MemoryPath sourcePath) { //Collect alias indexes AssignCollector sourceCollector = new AssignCollector(snapshot); sourceCollector.ProcessPath(sourcePath); //Memory locations where to get data from ReadCollector valueCollector = new ReadCollector(snapshot); valueCollector.ProcessPath(sourcePath); //Get data from locations ReadWorker worker = new ReadWorker(snapshot); MemoryEntry value = worker.ReadValue(valueCollector); //Makes deep copy of data to prevent changes after assign alias TemporaryIndex temporaryIndex = snapshot.CreateTemporary(); MergeWithinSnapshotWorker mergeWorker = new MergeWithinSnapshotWorker(snapshot); mergeWorker.MergeMemoryEntry(temporaryIndex, value); //Memory locations to store data into AssignCollector targetCollector = new AssignCollector(snapshot); targetCollector.AliasesProcessing = AliasesProcessing.BeforeCollecting; targetCollector.ProcessPath(targetPath); AssignAliasWorker assignWorker = new AssignAliasWorker(snapshot); assignWorker.AssignAlias(sourceCollector, targetCollector, temporaryIndex); snapshot.ReleaseTemporary(temporaryIndex); }
private void toolStripMenuItem9_Click(object sender, EventArgs e) { if (ReadWorker.IsBusy) { return; } ReadWorker.RunWorkerAsync(); }
/// <inheritdoc /> public MemoryEntry Read(Snapshot snapshot, MemoryPath path) { ReadCollector collector = new ReadCollector(snapshot); collector.ProcessPath(path); ReadWorker worker = new ReadWorker(snapshot); return(worker.ReadValue(collector)); }
private void btnRead_Click(object sender, EventArgs e) { int address = (int)numericReadStartAddress.Value; int length = (int)numericReadLength.Value; AppendConsoleText($"Reading {length} bytes from address 0x{address:X}...\r\n"); UpdateBackgroundWorkerActive(true); ReadWorker readWorker = new ReadWorker(_rtd, address, length, true); readWorker.WorkerReportStatus += AppendConsoleText; readWorker.ReadWorkerFinished += ReadWorkerFinished; readWorker.Start(); }
static void Main() { QueryPerformanceFrequency(ref freq); //ReadWorker class initialized ReadWorker workerObject = new ReadWorker(); Thread workerThread = new Thread(workerObject.DoWork); workerThread.Start(); Application.Run(new MousePointTracker()); }