/[RomCheater]/trunk/RomCheater/Docking/FloatingMemorySearcher.cs
ViewVC logotype

Diff of /trunk/RomCheater/Docking/FloatingMemorySearcher.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 459 by william, Mon Jun 3 02:23:04 2013 UTC revision 460 by william, Mon Jun 3 03:00:13 2013 UTC
# Line 1426  namespace RomCheater.Docking Line 1426  namespace RomCheater.Docking
1426                  provider_st.Start();                  provider_st.Start();
1427                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))
1428                  {                  {
1429                      provider.OpenProvider();                    
                     int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);  
                     SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);  
                     provider.OnBytesRead += new BaseEventHandler<OnBytesReadEventArgs>(search_provider_OnBytesRead);  
1430                      if (SearchArgs.IsFirstSearch)                      if (SearchArgs.IsFirstSearch)
1431                      {                      {
1432                            provider.OpenProvider();
1433                            int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);
1434                            SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);
1435                            provider.OnBytesRead += new BaseEventHandler<OnBytesReadEventArgs>(search_provider_OnBytesRead);
1436                          provider.ReadProcessMemoryAtOnce(MemoryRangeStart, (MemoryRangeSize - MemoryRangeStart), writer);                          provider.ReadProcessMemoryAtOnce(MemoryRangeStart, (MemoryRangeSize - MemoryRangeStart), writer);
1437                            if (SearchWorkerThread.CancellationPending)
1438                            {
1439                                provider_st.Stop();
1440                                st.Stop();
1441                                writer.CancelRequest();
1442                                writer.Dispose();
1443                                writer = null;
1444                                e.Result = true;
1445                                provider.CloseProvider();
1446                                return;
1447                            }
1448                            writer.Dispose();
1449                            writer = null;
1450                            provider.CloseProvider();
1451                      }                      }
1452                      else                      else
1453                      {                      {
1454                          // need to get the address list                          // need to get the address list
1455                          using (SearchResultReader reader = new SearchResultReader(SearchGuid))                          using (SearchResultReader reader = new SearchResultReader(SearchGuid))
1456                          {                          {                        
1457                              var addresses = reader.GetResultAddresses(SearchArgs, (IAcceptsProcessAndConfig)this, resultsprogress);                              byte[] guid = SearchGuid.ToByteArray();
1458                              foreach (var address in addresses)                              guid[guid.Length-1]++; // increment the search guid by 1
1459                                Guid new_SearchGuid = new Guid(guid);
1460                                provider.OpenProvider();
1461                                provider.OnBytesRead += new BaseEventHandler<OnBytesReadEventArgs>(search_provider_OnBytesRead);
1462                                foreach (var item in reader.GetResults(SearchArgs, (IAcceptsProcessAndConfig)this, resultsprogress))
1463                              {                              {
1464                                  provider.ReadProcessMemoryAtOnce(address, STEP_SIZE, writer);                                  using (SearchResultWriter writer = new SearchResultWriter((int)(reader.ResultCount), new_SearchGuid))
1465                                    {
1466                                        provider.ReadProcessMemoryAtOnce(item.Address, STEP_SIZE, writer);
1467                                    }
1468                              }                              }
1469                                provider.CloseProvider();
1470                                SearchGuid = new_SearchGuid;
1471                          }                          }
1472                      }                      }
                     provider.CloseProvider();  
                     if (SearchWorkerThread.CancellationPending)  
                     {  
                         provider_st.Stop();  
                         st.Stop();  
                         writer.CancelRequest();  
                         writer.Dispose();  
                         writer = null;  
                         e.Result = true;  
                         return;  
                     }  
                     writer.Dispose();  
                     writer = null;  
1473                  }                  }
1474                  provider_st.Stop();                  provider_st.Stop();
1475                  logger.Profiler.WriteLine("It took a total of {0} seconds for the memory provider to complete it's operation(s).", provider_st.Elapsed.TotalSeconds);                  logger.Profiler.WriteLine("It took a total of {0} seconds for the memory provider to complete it's operation(s).", provider_st.Elapsed.TotalSeconds);

Legend:
Removed from v.459  
changed lines
  Added in v.460

  ViewVC Help
Powered by ViewVC 1.1.22