/[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 548 by william, Wed Jun 5 23:23:33 2013 UTC revision 549 by william, Thu Jun 6 01:41:45 2013 UTC
# Line 1502  namespace RomCheater.Docking Line 1502  namespace RomCheater.Docking
1502                      else                      else
1503                      {                      {
1504                          Guid new_SearchGuid = SearchGuid;                          Guid new_SearchGuid = SearchGuid;
1505                          //int Last_Whole_Percent_Done = 0;                          int Last_Whole_Percent_Done = 0;
1506                          // need to get the address list                          // need to get the address list
1507                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, true)) // delete the file on dispose                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, true,SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation))) // delete the file on dispose
1508                          {                          {
1509                                uint[] reader_addresses = new uint[reader.ResultCount];
1510    
1511                                // pre-populate the addresses array
1512                                Stopwatch st_profiler_reader_addresses = new Stopwatch();
1513                                st_profiler_reader_addresses.Start();
1514                                int reader_address_index = 0;
1515                                foreach (var k in reader.GetResultCollection())
1516                                {
1517                                    
1518                                    if (SearchWorkerThread.CancellationPending) { st_profiler_reader_addresses.Stop(); break; }
1519                                    reader_addresses[reader_address_index] = k.Address;
1520    
1521                                    string message = string.Format(" -> Creating Address Array (0x{0} of 0x{1})", reader_address_index.ToString("X"), reader_addresses.Length.ToString("X"));
1522                                    double double_percent_done = 100.0 * (double)((double)reader_address_index / (double)reader_addresses.Length);
1523                                    int int_percent_done = (int)double_percent_done;
1524                                    if ((int_percent_done != Last_Whole_Percent_Done))// && (reader_address_index % 10000) == 0)
1525                                    {
1526                                        UpdateProgress((int)double_percent_done, message);
1527                                        Last_Whole_Percent_Done = int_percent_done;
1528                                        logger.Profiler.WriteLine("It has taken {0} seconds to pre-populate the address array.", st_profiler_reader_addresses.Elapsed.TotalSeconds);
1529                                    }
1530    
1531                                    reader_address_index++;
1532                                }
1533                                st_profiler_reader_addresses.Stop();
1534                                logger.Profiler.WriteLine("It took a total of {0} seconds to pre-populate the address array.", st_profiler_reader_addresses.Elapsed.TotalSeconds);
1535                              new_SearchGuid = GuidTools.IncrementGuid(SearchGuid);                              new_SearchGuid = GuidTools.IncrementGuid(SearchGuid);
1536                              using (SearchResultWriter writer = new SearchResultWriter(0, new_SearchGuid))                              using (SearchResultWriter writer = new SearchResultWriter(0, new_SearchGuid))
1537                              {                              {
1538                                    Last_Whole_Percent_Done = 0;
1539                                  //int index = 0;                                  //int index = 0;
1540    
1541                                  provider.OpenProvider();                                  provider.OpenProvider();
1542                                  //int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);                                  //int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);
1543                                  //SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);                                  //SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);                                
                                 int Last_Whole_Percent_Done = 0;  
1544                                  uint size = 0;                                  uint size = 0;
1545                                  const uint MB_SIZE = 16; /* MEM_1MB * MB_SIZE = MB_SIZE in megabytes */                                  const uint MB_SIZE = 16; /* MEM_1MB * MB_SIZE = MB_SIZE in megabytes */
1546                                  switch (sdt)                                  switch (sdt)
# Line 1552  namespace RomCheater.Docking Line 1578  namespace RomCheater.Docking
1578                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1579                                                  {                                                  {
1580                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1581                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1582                                                      {                                                      {
1583                                                          continue;                                                          continue;
1584                                                      }                                                      }
# Line 1597  namespace RomCheater.Docking Line 1623  namespace RomCheater.Docking
1623                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1624                                                  {                                                  {
1625                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1626                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1627                                                      {                                                      {
1628                                                          continue;                                                          continue;
1629                                                      }                                                      }
# Line 1643  namespace RomCheater.Docking Line 1669  namespace RomCheater.Docking
1669                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1670                                                  {                                                  {
1671                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1672                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1673                                                      {                                                      {
1674                                                          continue;                                                          continue;
1675                                                      }                                                      }
# Line 1688  namespace RomCheater.Docking Line 1714  namespace RomCheater.Docking
1714                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1715                                                  {                                                  {
1716                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1717                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1718                                                      {                                                      {
1719                                                          continue;                                                          continue;
1720                                                      }                                                      }
# Line 1734  namespace RomCheater.Docking Line 1760  namespace RomCheater.Docking
1760                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1761                                                  {                                                  {
1762                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1763                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1764                                                      {                                                      {
1765                                                          continue;                                                          continue;
1766                                                      }                                                      }
# Line 1779  namespace RomCheater.Docking Line 1805  namespace RomCheater.Docking
1805                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1806                                                  {                                                  {
1807                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1808                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1809                                                      {                                                      {
1810                                                          continue;                                                          continue;
1811                                                      }                                                      }
# Line 1825  namespace RomCheater.Docking Line 1851  namespace RomCheater.Docking
1851                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1852                                                  {                                                  {
1853                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1854                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1855                                                      {                                                      {
1856                                                          continue;                                                          continue;
1857                                                      }                                                      }
# Line 1870  namespace RomCheater.Docking Line 1896  namespace RomCheater.Docking
1896                                                  foreach (var Value in t_data)                                                  foreach (var Value in t_data)
1897                                                  {                                                  {
1898                                                      if (SearchWorkerThread.CancellationPending) { break; }                                                      if (SearchWorkerThread.CancellationPending) { break; }
1899                                                      if (!reader.ContainsAddress(address_index, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                                                      if (!reader.ContainsAddress(address_index))
1900                                                      {                                                      {
1901                                                          continue;                                                          continue;
1902                                                      }                                                      }
# Line 2575  namespace RomCheater.Docking Line 2601  namespace RomCheater.Docking
2601              UpdateProgress(100, String.Empty);              UpdateProgress(100, String.Empty);
2602              //new Action<int, string>(UpdateProgress).Invoke(100, string.Empty);              //new Action<int, string>(UpdateProgress).Invoke(100, string.Empty);
2603              bool unsigned = SearchArgs.IsUnsignedDataType;              bool unsigned = SearchArgs.IsUnsignedDataType;
2604              using (SearchResultReader reader = new SearchResultReader(SearchGuid))              using (SearchResultReader reader = new SearchResultReader(SearchGuid, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))
2605              {              {
2606                  logger.Info.WriteLine(string.Format("Found 0x{0:x8} results", reader.ResultCount));                  logger.Info.WriteLine(string.Format("Found 0x{0:x8} results", reader.ResultCount));
2607    
# Line 2583  namespace RomCheater.Docking Line 2609  namespace RomCheater.Docking
2609                  {                  {
2610                      lstResults.Items.Clear();                      lstResults.Items.Clear();
2611                      List<ResultItem> items = new List<ResultItem>();                      List<ResultItem> items = new List<ResultItem>();
2612                      foreach (var k in reader.GetResults(SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation)))                      foreach (var k in reader.GetResultCollection())
2613                      {                      {
2614                          switch (SearchArgs.DataType)                          switch (SearchArgs.DataType)
2615                          {                          {

Legend:
Removed from v.548  
changed lines
  Added in v.549

  ViewVC Help
Powered by ViewVC 1.1.22