/[RomCheater]/trunk/RomCheater.PluginFramework/Core/ConfigPlugin.cs
ViewVC logotype

Diff of /trunk/RomCheater.PluginFramework/Core/ConfigPlugin.cs

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

revision 86 by william, Wed May 9 19:41:06 2012 UTC revision 174 by william, Mon May 28 09:21:52 2012 UTC
# Line 1  Line 1 
1  ´╗┐using System;  ´╗┐//#define DISABLE_VERBOSE_LOGGING_FOR_PERFORMANCE_BOOST // when defined will disable verbose logging for performance speed-up
2    //#define DISALLOW_VERBOSE_LOGGING // when defined will disallow verbose logging for performance reasons
3    #define ALLOW_SYSTEM_PROCESSES_TO_BE_INLUCDED // when defined system processes will be included in process list
4    using System;
5  using System.Collections.Generic;  using System.Collections.Generic;
6  using System.Linq;  using System.Linq;
7  using System.Text;  using System.Text;
8  using RomCheater.PluginFramework.Interfaces;  using RomCheater.PluginFramework.Interfaces;
9  using System.Diagnostics;  using System.Diagnostics;
10    using libWin32.Win32.Threading;
11    using RomCheater.Logging;
12    using System.IO;
13    
14  namespace RomCheater.PluginFramework.Core  namespace RomCheater.PluginFramework.Core
15  {  {
# Line 12  namespace RomCheater.PluginFramework.Cor Line 18  namespace RomCheater.PluginFramework.Cor
18      /// </summary>      /// </summary>
19      public abstract class ConfigPlugin : PluginBase, IConfigPlugin      public abstract class ConfigPlugin : PluginBase, IConfigPlugin
20      {      {
21          public ConfigPlugin() : base() { this.ValidProcessesForPlugin = new List<Process>(); }          public ConfigPlugin() : this(false) { }
22            public ConfigPlugin(bool doinit) : base() { this.ValidProcessesForPlugin = new List<ProcContainer>(); if(doinit) init(); }
23    
24            public override void Reload()
25            {
26                logger.Debug.WriteLine(" Loading config for {0}...", this.ToString());
27                init();
28                logger.Debug.WriteLine(" Loaded config for {0}.", this.ToString());
29            }
30            private void init()
31            {
32    //            loggerflags flags = logger.GetLoggingFlags();
33    
34    //#if DISABLE_VERBOSE_LOGGING_FOR_PERFORMANCE_BOOST
35    //            ushort performance_flags = flags.Value;
36    //            if (flags.HasFlag(loggerflags.VERBOSE_DEBUG))
37    //            {
38    //                performance_flags = (ushort)(performance_flags &~ loggerflags.VERBOSE_DEBUG.Value);
39    //            }
40    //            if (flags.HasFlag(loggerflags.VERBOSE_ERROR))
41    //            {
42    //                performance_flags = (ushort)(performance_flags &~ loggerflags.VERBOSE_ERROR.Value);
43    //            }
44    //#endif
45    //            logger.SetLoggingFlags(performance_flags);
46    
47                List<ProcContainer> proc_list = new List<ProcContainer>();
48                foreach (Process proc in Process.GetProcesses())
49                {
50                    string proc_name = proc.ProcessName.ToLower();
51                    try
52                    {
53                        bool isSystem = false;
54                        string proc_user = ThreadControl.GetProcessOwner(proc.Handle, out isSystem).ToLower();
55    #if !ALLOW_SYSTEM_PROCESSES_TO_BE_INLUCDED
56                        if (isSystem)
57                        {
58    #if !DISALLOW_VERBOSE_LOGGING
59                            logger.VerboseDebug.WriteLine("    not adding process {0} because it is a system process", proc_name);
60    #endif
61                            continue;
62                        }
63    #endif
64                        ProcContainer container = null;
65                        try
66                        {
67                            container = new ProcContainer(proc);
68                            #if !DISALLOW_VERBOSE_LOGGING
69                            logger.VerboseDebug.WriteLine("  adding process {0} ", proc_name);
70    #endif
71                            proc_list.Add(container);
72                        }
73                        catch (FileNotFoundException) { }
74                        catch (Exception ex)
75                        {
76                            //throw;
77                            #if !DISALLOW_VERBOSE_LOGGING
78                            logger.VerboseError.WriteLine("    not adding process {0} because it thew an exception [{1}]", proc_name, ex.ToString());
79    #endif
80                            //continue;
81                        }
82                    }
83                    catch (System.ComponentModel.Win32Exception ex)
84                    {
85                        if (!((uint)ex.ErrorCode == 0x80004005))
86                        {
87                            #if !DISALLOW_VERBOSE_LOGGING
88                            logger.VerboseError.WriteLine("    not adding process {0} because it thew an exception [{1}]", proc_name, ex.ToString());
89    #endif
90                        }                  
91                        //continue;
92                    }
93                    catch (Exception ex)
94                    {
95                        #if !DISALLOW_VERBOSE_LOGGING
96                        logger.VerboseError.WriteLine("    not adding process {0} because it thew an exception [{1}]", proc_name, ex.ToString());
97    #endif
98                        //continue;
99                    }
100                }
101                proc_list = proc_list.OrderBy(p => p.Name).ToList();
102                Predicate<ProcContainer> predicate = new Predicate<ProcContainer>(IsNotValidProcess);
103                proc_list.RemoveAll(predicate);
104                ValidProcessesForPlugin = proc_list;
105                //logger.SetLoggingFlags(flags); // reset flags
106            }
107    
108            protected abstract bool IsNotValidProcess(ProcContainer p);
109    
110          #region IConfigPlugin Members          #region IConfigPlugin Members
111          public List<Process> ValidProcessesForPlugin { get; protected set; }          public List<ProcContainer> ValidProcessesForPlugin { get; protected set; }
112          public override Guid Id          public override Guid ID
113          {          {
114              get { return new Guid(); }              get { return new Guid(); }
115          }          }

Legend:
Removed from v.86  
changed lines
  Added in v.174

  ViewVC Help
Powered by ViewVC 1.1.22