diff --git a/GUI/MainForm.cs b/GUI/MainForm.cs index 79d1968..63fe903 100644 --- a/GUI/MainForm.cs +++ b/GUI/MainForm.cs @@ -44,7 +44,7 @@ using System.Windows.Forms; using Aga.Controls.Tree; using Aga.Controls.Tree.NodeControls; using OpenHardwareMonitor.Hardware; -using OpenHardwareMonitor.WMIProvider; +using OpenHardwareMonitor.Wmi; namespace OpenHardwareMonitor.GUI { public partial class MainForm : Form { diff --git a/OpenHardwareMonitor.csproj b/OpenHardwareMonitor.csproj index d8bba66..97183e8 100644 --- a/OpenHardwareMonitor.csproj +++ b/OpenHardwareMonitor.csproj @@ -128,10 +128,10 @@ - - - - + + + + Component diff --git a/Wmi/Hardware.cs b/Wmi/Hardware.cs new file mode 100644 index 0000000..4e10170 --- /dev/null +++ b/Wmi/Hardware.cs @@ -0,0 +1,60 @@ +/* + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the License. + + The Original Code is the Open Hardware Monitor code. + + The Initial Developer of the Original Code is + Paul Werelds . + Portions created by the Initial Developer are Copyright (C) 2009-2010 + the Initial Developer. All Rights Reserved. + + Contributor(s): + + Alternatively, the contents of this file may be used under the terms of + either the GNU General Public License Version 2 or later (the "GPL"), or + the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + in which case the provisions of the GPL or the LGPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of either the GPL or the LGPL, and not to allow others to + use your version of this file under the terms of the MPL, indicate your + decision by deleting the provisions above and replace them with the notice + and other provisions required by the GPL or the LGPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +using System.Management.Instrumentation; +using OpenHardwareMonitor.Hardware; + +namespace OpenHardwareMonitor.Wmi { + [InstrumentationClass(InstrumentationType.Instance)] + public class Hardware : IWmiObject { + #region WMI Exposed + + public string HardwareType { get; private set; } + public string Identifier { get; private set; } + public string Name { get; private set; } + + #endregion + + public Hardware(IHardware hardware) { + Name = hardware.Name; + Identifier = hardware.Identifier.ToString(); + HardwareType = hardware.HardwareType.ToString(); + } + + public void Update() { } + } +} diff --git a/Wmi/IWmiObject.cs b/Wmi/IWmiObject.cs new file mode 100644 index 0000000..b5f5865 --- /dev/null +++ b/Wmi/IWmiObject.cs @@ -0,0 +1,47 @@ +/* + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the License. + + The Original Code is the Open Hardware Monitor code. + + The Initial Developer of the Original Code is + Paul Werelds . + Portions created by the Initial Developer are Copyright (C) 2009-2010 + the Initial Developer. All Rights Reserved. + + Contributor(s): + + Alternatively, the contents of this file may be used under the terms of + either the GNU General Public License Version 2 or later (the "GPL"), or + the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + in which case the provisions of the GPL or the LGPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of either the GPL or the LGPL, and not to allow others to + use your version of this file under the terms of the MPL, indicate your + decision by deleting the provisions above and replace them with the notice + and other provisions required by the GPL or the LGPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +namespace OpenHardwareMonitor.Wmi { + interface IWmiObject { + // Both of these get exposed to WMI + string Name { get; } + string Identifier { get; } + + // Not exposed. + void Update(); + } +} diff --git a/Wmi/Sensor.cs b/Wmi/Sensor.cs new file mode 100644 index 0000000..3640764 --- /dev/null +++ b/Wmi/Sensor.cs @@ -0,0 +1,81 @@ +/* + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the License. + + The Original Code is the Open Hardware Monitor code. + + The Initial Developer of the Original Code is + Paul Werelds . + Portions created by the Initial Developer are Copyright (C) 2009-2010 + the Initial Developer. All Rights Reserved. + + Contributor(s): + + Alternatively, the contents of this file may be used under the terms of + either the GNU General Public License Version 2 or later (the "GPL"), or + the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + in which case the provisions of the GPL or the LGPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of either the GPL or the LGPL, and not to allow others to + use your version of this file under the terms of the MPL, indicate your + decision by deleting the provisions above and replace them with the notice + and other provisions required by the GPL or the LGPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +using System.Management.Instrumentation; +using OpenHardwareMonitor.Hardware; +using OpenHardwareMonitor.Wmi; + +namespace OpenHardwareMonitor.Wmi { + [InstrumentationClass(InstrumentationType.Instance)] + public class Sensor : IWmiObject { + private ISensor sensor; + + #region WMI Exposed + + public string SensorType { get; private set; } + public string Identifier { get; private set; } + public string Parent { get; private set; } + public string Name { get; private set; } + public float Value { get; private set; } + public float Min { get; private set; } + public float Max { get; private set; } + public int Index { get; private set; } + + #endregion + + public Sensor(ISensor sensor) { + Name = sensor.Name; + Index = sensor.Index; + + SensorType = sensor.SensorType.ToString(); + Identifier = sensor.Identifier.ToString(); + Parent = sensor.Hardware.Identifier.ToString(); + + this.sensor = sensor; + } + + public void Update() { + Value = (sensor.Value != null) ? (float)sensor.Value : 0; + + if (sensor.Min != null) + Min = (float)sensor.Min; + + if (sensor.Max != null) + Max = (float)sensor.Max; + } + } +} diff --git a/WMIProvider/WMIProvider.cs b/Wmi/WmiProvider.cs similarity index 84% rename from WMIProvider/WMIProvider.cs rename to Wmi/WmiProvider.cs index ec6a7cc..e492a63 100644 --- a/WMIProvider/WMIProvider.cs +++ b/Wmi/WmiProvider.cs @@ -39,22 +39,23 @@ using System; using System.Collections.Generic; using System.Management.Instrumentation; using OpenHardwareMonitor.Hardware; +using OpenHardwareMonitor.Wmi; [assembly: Instrumented("root/OpenHardwareMonitor")] [System.ComponentModel.RunInstaller(true)] public class InstanceInstaller : DefaultManagementProjectInstaller { } -namespace OpenHardwareMonitor.WMIProvider { +namespace OpenHardwareMonitor.Wmi { /// /// The WMI Provider. /// This class is not exposed to WMI itself. /// public class WmiProvider : IDisposable { - private List _activeInstances; + private List activeInstances; public WmiProvider(IComputer computer) { - _activeInstances = new List(); + activeInstances = new List(); foreach (IHardware hardware in computer.Hardware) ComputerHardwareAdded(hardware); @@ -64,7 +65,7 @@ namespace OpenHardwareMonitor.WMIProvider { } public void Update() { - foreach (IWmiObject instance in _activeInstances) + foreach (IWmiObject instance in activeInstances) instance.Update(); } @@ -79,7 +80,7 @@ namespace OpenHardwareMonitor.WMIProvider { hardware.SensorRemoved += HardwareSensorRemoved; Hardware hw = new Hardware(hardware); - _activeInstances.Add(hw); + activeInstances.Add(hw); Instrumentation.Publish(hw); } @@ -90,7 +91,7 @@ namespace OpenHardwareMonitor.WMIProvider { private void HardwareSensorAdded(ISensor data) { Sensor sensor = new Sensor(data); - _activeInstances.Add(sensor); + activeInstances.Add(sensor); Instrumentation.Publish(sensor); } @@ -117,25 +118,25 @@ namespace OpenHardwareMonitor.WMIProvider { #region Helpers private bool Exists(string identifier) { - return _activeInstances.Exists(h => h.Identifier == identifier); + return activeInstances.Exists(h => h.Identifier == identifier); } private void RevokeInstance(string identifier) { - int instanceIndex = _activeInstances.FindIndex( + int instanceIndex = activeInstances.FindIndex( item => item.Identifier == identifier.ToString() ); - Instrumentation.Revoke(_activeInstances[instanceIndex]); + Instrumentation.Revoke(activeInstances[instanceIndex]); - _activeInstances.RemoveAt(instanceIndex); + activeInstances.RemoveAt(instanceIndex); } #endregion public void Dispose() { - foreach (IWmiObject instance in _activeInstances) + foreach (IWmiObject instance in activeInstances) Instrumentation.Revoke(instance); - _activeInstances = null; + activeInstances = null; } } }