Hardware/Computer.cs
changeset 370 8e4dedc41924
parent 360 c1a4377c11d1
     1.1 --- a/Hardware/Computer.cs	Sun Jul 22 18:07:11 2012 +0000
     1.2 +++ b/Hardware/Computer.cs	Mon Jul 23 21:54:35 2012 +0000
     1.3 @@ -22,13 +22,16 @@
     1.4      private readonly List<IGroup> groups = new List<IGroup>();
     1.5      private readonly ISettings settings;
     1.6  
     1.7 +    private SMBIOS smbios;
     1.8 +
     1.9      private bool open;
    1.10  
    1.11      private bool mainboardEnabled;
    1.12      private bool cpuEnabled;
    1.13 +    private bool ramEnabled;
    1.14      private bool gpuEnabled;
    1.15      private bool fanControllerEnabled;
    1.16 -    private bool hddEnabled;        
    1.17 +    private bool hddEnabled;    
    1.18  
    1.19      public Computer() {
    1.20        this.settings = new Settings();
    1.21 @@ -76,15 +79,20 @@
    1.22        if (open)
    1.23          return;
    1.24  
    1.25 +      this.smbios = new SMBIOS();
    1.26 +
    1.27        Ring0.Open();
    1.28        Opcode.Open();
    1.29  
    1.30        if (mainboardEnabled)
    1.31 -        Add(new Mainboard.MainboardGroup(settings));
    1.32 +        Add(new Mainboard.MainboardGroup(smbios, settings));
    1.33        
    1.34        if (cpuEnabled)
    1.35          Add(new CPU.CPUGroup(settings));
    1.36  
    1.37 +      if (ramEnabled)
    1.38 +        Add(new RAM.RAMGroup(smbios, settings));
    1.39 +
    1.40        if (gpuEnabled) {
    1.41          Add(new ATI.ATIGroup(settings));
    1.42          Add(new Nvidia.NvidiaGroup(settings));
    1.43 @@ -108,7 +116,7 @@
    1.44        set {
    1.45          if (open && value != mainboardEnabled) {
    1.46            if (value)
    1.47 -            Add(new Mainboard.MainboardGroup(settings));
    1.48 +            Add(new Mainboard.MainboardGroup(smbios, settings));
    1.49            else
    1.50              RemoveType<Mainboard.MainboardGroup>();
    1.51          }
    1.52 @@ -131,6 +139,21 @@
    1.53        }
    1.54      }
    1.55  
    1.56 +    public bool RAMEnabled {
    1.57 +      get { return ramEnabled; }
    1.58 +
    1.59 +      [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
    1.60 +      set {
    1.61 +        if (open && value != ramEnabled) {
    1.62 +          if (value)
    1.63 +            Add(new RAM.RAMGroup(smbios, settings));
    1.64 +          else
    1.65 +            RemoveType<RAM.RAMGroup>();
    1.66 +        }
    1.67 +        ramEnabled = value;
    1.68 +      }
    1.69 +    }    
    1.70 +
    1.71      public bool GPUEnabled {
    1.72        get { return gpuEnabled; }
    1.73  
    1.74 @@ -336,6 +359,8 @@
    1.75        Opcode.Close();
    1.76        Ring0.Close();
    1.77  
    1.78 +      this.smbios = null;
    1.79 +
    1.80        open = false;
    1.81      }
    1.82