/[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 573 by william, Thu Jun 6 07:35:49 2013 UTC revision 578 by william, Thu Jun 6 08:18:44 2013 UTC
# Line 181  namespace RomCheater.Docking Line 181  namespace RomCheater.Docking
181          private uint _MemoryRangeStart;          private uint _MemoryRangeStart;
182          private uint _MemoryRangeSize;          private uint _MemoryRangeSize;
183  #endif  #endif
184          public uint MemoryRangeStart          public ulong MemoryRangeStart
185          {          {
186              get              get
187              {              {
# Line 198  namespace RomCheater.Docking Line 198  namespace RomCheater.Docking
198                  txtMemoryRangeStart.Value = value;                  txtMemoryRangeStart.Value = value;
199  #endif  #endif
200              }              }
201          }                  }
202          public uint MemoryRangeSize          public ulong MemoryRangeSize
203          {          {
204              get              get
205              {              {
# Line 502  namespace RomCheater.Docking Line 502  namespace RomCheater.Docking
502                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))
503                  {                  {
504                      provider.OpenProvider();                      provider.OpenProvider();
505                      int bytesReadSize;                      ulong bytesReadSize;
506                      byte[] data;                      byte[] data;
507                      uint bytesToRead = 0;                      uint bytesToRead = 0;
508                      switch (_result.ValueType)                      switch (_result.ValueType)
# Line 578  namespace RomCheater.Docking Line 578  namespace RomCheater.Docking
578                      e.Cancel = true;                      e.Cancel = true;
579                      return;                      return;
580                  }                  }
581                  int Address = 0;                  ulong Address = 0;
582                  ResultDataType _result = (ResultDataType)AddedItems[i].Tag;                  ResultDataType _result = (ResultDataType)AddedItems[i].Tag;
583                  Address = Convert.ToInt32(AddedItems[i].SubItems[col_Added_Address].Text, 16);                  Address = Convert.ToUInt64(AddedItems[i].SubItems[col_Added_Address].Text, 16);
584                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))                  using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))
585                  {                  {
586                      provider.OpenProvider();                      provider.OpenProvider();
587                      int bytesReadSize;                      ulong bytesReadSize;
588                      byte[] data;                      byte[] data;
589                      uint bytesToRead = 0;                      ulong bytesToRead = 0;
590                      switch (_result.ValueType)                      switch (_result.ValueType)
591                      {                      {
592                          case SearchDataTypes._8bits:                          case SearchDataTypes._8bits:
# Line 1112  namespace RomCheater.Docking Line 1112  namespace RomCheater.Docking
1112                      {                      {
1113                          #region FirstSearch                          #region FirstSearch
1114                          provider.OpenProvider();                          provider.OpenProvider();
1115                          int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);                          ulong count = (ulong)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);
1116                          SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);                          SearchResultWriter writer = new SearchResultWriter((ulong)(count), SearchGuid);
1117                          int Last_Whole_Percent_Done = 0;                          int Last_Whole_Percent_Done = 0;
1118                          uint size = 0;                          ulong size = 0;
1119                          switch (sdt)                          switch (sdt)
1120                          {                          {
1121                              case SearchDataTypes._8bits: size = (MEM_CHUNK_SIZE / BitTools.SizeOf<uint>(sdt)); break;                              case SearchDataTypes._8bits: size = (MEM_CHUNK_SIZE / BitTools.SizeOf<uint>(sdt)); break;
# Line 1124  namespace RomCheater.Docking Line 1124  namespace RomCheater.Docking
1124                              case SearchDataTypes._64bits: size = (MEM_CHUNK_SIZE / BitTools.SizeOf<uint>(sdt)); break;                              case SearchDataTypes._64bits: size = (MEM_CHUNK_SIZE / BitTools.SizeOf<uint>(sdt)); break;
1125                          }                          }
1126                          //uint size = STEP_SIZE * 4096;                          //uint size = STEP_SIZE * 4096;
1127                          for (uint i = MemoryRangeStart; i < MemoryRangeSize; i += size)                          for (ulong i = MemoryRangeStart; i < MemoryRangeSize; i += size)
1128                          {                          {
1129    
1130                              int bytesRead = 0;                              ulong bytesRead = 0;
1131                              byte[] data = new byte[size];                              byte[] data = new byte[size];
1132                              provider.ReadProcessMemoryAtOnce(i, size, out bytesRead, out data);                              provider.ReadProcessMemoryAtOnce(i, size, out bytesRead, out data);
1133                              string message = string.Format(" -> Reading Address: 0x{0:x8}", (i + MemoryRangeStart));                              string message = string.Format(" -> Reading Address: 0x{0:x8}", (i + MemoryRangeStart));
# Line 1139  namespace RomCheater.Docking Line 1139  namespace RomCheater.Docking
1139                                  Last_Whole_Percent_Done = int_percent_done;                                  Last_Whole_Percent_Done = int_percent_done;
1140                              }                              }
1141    
1142                              uint address_index = i;                              ulong address_index = i;
1143                              #region comparison and serialization                              #region comparison and serialization
1144                              switch (sdt)                              switch (sdt)
1145                              {                              {
# Line 1516  namespace RomCheater.Docking Line 1516  namespace RomCheater.Docking
1516                          Guid new_SearchGuid = GuidTools.IncrementGuid(SearchGuid);                          Guid new_SearchGuid = GuidTools.IncrementGuid(SearchGuid);
1517                          int Last_Whole_Percent_Done = 0;                          int Last_Whole_Percent_Done = 0;
1518                          // need to get the address list                          // need to get the address list
1519                          uint[] reader_addresses = new uint[0];                          ulong[] reader_addresses = new ulong[0];
1520                          #region Address pre-population                          #region Address pre-population
1521                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation))) // delete the file on dispose                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, SearchArgs.IsUnsignedDataType, SearchArgs.DataType, new Action<int, string>(UpdateProgress), new Func<bool>(ShouldCancelAnySearchOperation))) // delete the file on dispose
1522                          {                          {
1523                              reader_addresses = new uint[reader.ResultCount];                              reader_addresses = new ulong[reader.ResultCount];
1524                              // pre-populate the addresses array                              // pre-populate the addresses array
1525                              Stopwatch st_profiler_reader_addresses = new Stopwatch();                              Stopwatch st_profiler_reader_addresses = new Stopwatch();
1526                              st_profiler_reader_addresses.Start();                              st_profiler_reader_addresses.Start();
# Line 1588  namespace RomCheater.Docking Line 1588  namespace RomCheater.Docking
1588                                      Last_Whole_Percent_Done = int_percent_done;                                      Last_Whole_Percent_Done = int_percent_done;
1589                                  }                                  }
1590    
1591                                  int bytesRead = 0;                                  ulong bytesRead = 0;
1592                                  byte[] data = new byte[STEP_SIZE];                                  byte[] data = new byte[STEP_SIZE];
1593                                  provider.ReadProcessMemory(address, STEP_SIZE, out bytesRead, out data);                                  provider.ReadProcessMemory(address, STEP_SIZE, out bytesRead, out data);
1594                                  switch (sdt)                                  switch (sdt)

Legend:
Removed from v.573  
changed lines
  Added in v.578

  ViewVC Help
Powered by ViewVC 1.1.22