/[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 490 by william, Mon Jun 3 21:30:41 2013 UTC revision 496 by william, Tue Jun 4 17:33:28 2013 UTC
# Line 1815  namespace RomCheater.Docking Line 1815  namespace RomCheater.Docking
1815                      }                      }
1816                      else                      else
1817                      {                      {
1818                          
1819    
1820                          // need to get the address list                          // need to get the address list
1821                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, true)) // delete the file on dispose                          using (SearchResultReader reader = new SearchResultReader(SearchGuid, true)) // delete the file on dispose
1822                          {                          {
1823                              byte[] guid = SearchGuid.ToByteArray();                              #region action_onbytesread :: custom in-line delegate for processing read bytes
1824                              guid[guid.Length - 1]++; // increment the search guid by 1                              // custom in-line delegate for processing read bytes
1825                              Guid new_SearchGuid = new Guid(guid);                              Action<OnBytesReadEventArgs> action_onbytesread = delegate(OnBytesReadEventArgs obre)
                             //const int item_count = 0x100;  
                             using (SearchResultWriter writer = new SearchResultWriter((int)(reader.ResultCount), new_SearchGuid))  
1826                              {                              {
1827                                  var items = reader.GetSearchAddressValueMatches((IAcceptsProcessAndConfig)this, SearchArgs, new Action<int, string>(UpdateProgress));                                  SearchDataTypes obre_sdt = SearchArgs.DataType;
1828                                    bool obre_unsigned = SearchArgs.IsUnsignedDataType;
1829                                    uint obre_CurrentIndex = obre.CurrentIndex; // this should represent the address
1830    
1831                                  reader.Dispose(); // delete the result file, if allowed                                  
1832    
1833                                  foreach (var item in items)                                  using (MemoryStream ms = new MemoryStream(obre.Data))
1834                                  {                                  {
1835                                      switch (SearchArgs.DataType)                                      using (BinaryReader br = new BinaryReader(ms))
1836                                      {                                      {
1837                                          case SearchDataTypes._8bits:                                          while (br.BaseStream.Position < br.BaseStream.Length)
1838                                              if (SearchArgs.IsUnsignedDataType)                                          {
1839                                              {                                              switch (obre_sdt)
1840                                                  writer.WriteResult<byte>(item.Address, Convert.ToByte(item.Value));                                              {
1841                                              }                                                  case SearchDataTypes._8bits:
1842                                              else                                                      if (obre_unsigned)
1843                                              {                                                      {
1844                                                  writer.WriteResult<sbyte>(item.Address, Convert.ToSByte(item.Value));                                                          #region 8bit - unsigned
1845                                              }                                                          var new_value = br.ReadByte(); // this should contain the updated value from memory
1846                                              break;                                                          using (_8bit_unsigned_comparer_ comparer = new _8bit_unsigned_comparer_(SearchArgs, obre_CurrentIndex))
1847                                          case SearchDataTypes._16bits:                                                          {
1848                                              if (SearchArgs.IsUnsignedDataType)                                                              byte value = 0; // this is the vaule we want to compare against
1849                                              {                                                              value = Convert.ToByte(SearchArgs.CompareStartValue);
1850                                                  writer.WriteResult<ushort>(item.Address, Convert.ToUInt16(item.Value));                                                              comparer.Value = value;
1851                                              }                                                              if (comparer.Compare(new_value, value))
1852                                              else                                                              {
1853                                              {                                                                  //writer.WriteResult<byte>(comparer.Address, comparer.Value);
1854                                                  writer.WriteResult<short>(item.Address, Convert.ToInt16(item.Value));                                                              }
1855                                              }                                                          }
1856                                              break;                                                          #endregion
1857                                          case SearchDataTypes._32bits:                                                      }
1858                                              if (SearchArgs.IsUnsignedDataType)                                                      else
1859                                              {                                                      {
1860                                                  writer.WriteResult<uint>(item.Address, Convert.ToUInt32(item.Value));                                                      }
1861                                                        break;
1862                                                    case SearchDataTypes._16bits:
1863                                                        if (obre_unsigned)
1864                                                        {
1865                                                        }
1866                                                        else
1867                                                        {
1868                                                        }
1869                                                        break;
1870                                                    case SearchDataTypes._32bits:
1871                                                        if (obre_unsigned)
1872                                                        {
1873                                                        }
1874                                                        else
1875                                                        {
1876                                                        }
1877                                                        break;
1878                                                    case SearchDataTypes._64bits:
1879                                                        if (obre_unsigned)
1880                                                        {
1881                                                        }
1882                                                        else
1883                                                        {
1884                                                        }
1885                                                        break;
1886                                              }                                              }
1887                                              else                                          }
                                             {  
                                                 writer.WriteResult<int>(item.Address, Convert.ToInt32(item.Value));  
                                             }  
                                             break;  
                                         case SearchDataTypes._64bits:  
                                             if (SearchArgs.IsUnsignedDataType)  
                                             {  
                                                 writer.WriteResult<ulong>(item.Address, Convert.ToUInt64(item.Value));  
                                             }  
                                             else  
                                             {  
                                                 writer.WriteResult<long>(item.Address, Convert.ToInt64(item.Value));  
                                             }  
                                             break;  
1888                                      }                                      }
1889                                  }                                  }
1890                                };
1891                                #endregion
1892    
1893                                provider.OpenProvider();
1894                                //int count = (int)((MemoryRangeSize - MemoryRangeStart) / STEP_SIZE);
1895                                //SearchResultWriter writer = new SearchResultWriter((int)(count), SearchGuid);
1896                                provider.OnBytesRead += new BaseEventHandler<OnBytesReadEventArgs>(action_onbytesread);
1897                                provider.ReadProcessMemoryAtOnce(MemoryRangeStart, (MemoryRangeSize - MemoryRangeStart), null);
1898                                if (SearchWorkerThread.CancellationPending)
1899                                {
1900                                    provider_st.Stop();
1901                                    st.Stop();          
1902                                    e.Result = true;
1903                                    provider.CloseProvider();
1904                                    return;
1905                              }                              }
1906                              SearchGuid = new_SearchGuid;                              provider.CloseProvider();
1907    
1908                            //byte[] guid = SearchGuid.ToByteArray();
1909                            //guid[guid.Length - 1]++; // increment the search guid by 1
1910                            //Guid new_SearchGuid = new Guid(guid);
1911                            ////const int item_count = 0x100;
1912                            //using (SearchResultWriter writer = new SearchResultWriter((int)(reader.ResultCount), new_SearchGuid))
1913                            //{
1914                            //    var items = reader.GetSearchAddressValueMatches((IAcceptsProcessAndConfig)this, SearchArgs, new Action<int, string>(UpdateProgress));
1915                            //    reader.Dispose(); // delete the result file, if allowed
1916                            //    foreach (var item in items)
1917                            //    {
1918                            //        switch (SearchArgs.DataType)
1919                            //        {
1920                            //            case SearchDataTypes._8bits:
1921                            //                if (SearchArgs.IsUnsignedDataType)
1922                            //                {
1923                            //                    writer.WriteResult<byte>(item.Address, Convert.ToByte(item.Value));
1924                            //                }
1925                            //                else
1926                            //                {
1927                            //                    writer.WriteResult<sbyte>(item.Address, Convert.ToSByte(item.Value));
1928                            //                }
1929                            //                break;
1930                            //            case SearchDataTypes._16bits:
1931                            //                if (SearchArgs.IsUnsignedDataType)
1932                            //                {
1933                            //                    writer.WriteResult<ushort>(item.Address, Convert.ToUInt16(item.Value));
1934                            //                }
1935                            //                else
1936                            //                {
1937                            //                    writer.WriteResult<short>(item.Address, Convert.ToInt16(item.Value));
1938                            //                }
1939                            //                break;
1940                            //            case SearchDataTypes._32bits:
1941                            //                if (SearchArgs.IsUnsignedDataType)
1942                            //                {
1943                            //                    writer.WriteResult<uint>(item.Address, Convert.ToUInt32(item.Value));
1944                            //                }
1945                            //                else
1946                            //                {
1947                            //                    writer.WriteResult<int>(item.Address, Convert.ToInt32(item.Value));
1948                            //                }
1949                            //                break;
1950                            //            case SearchDataTypes._64bits:
1951                            //                if (SearchArgs.IsUnsignedDataType)
1952                            //                {
1953                            //                    writer.WriteResult<ulong>(item.Address, Convert.ToUInt64(item.Value));
1954                            //                }
1955                            //                else
1956                            //                {
1957                            //                    writer.WriteResult<long>(item.Address, Convert.ToInt64(item.Value));
1958                            //                }
1959                            //                break;
1960                            //        }
1961                            //    }
1962                            //}
1963                            //SearchGuid = new_SearchGuid;
1964                          }                          }
1965                      }                      }
1966                  }                  }

Legend:
Removed from v.490  
changed lines
  Added in v.496

  ViewVC Help
Powered by ViewVC 1.1.22