Files
ReLibreHardwareMonitor/Hardware/RAM/GenericRAM.cs
T
Aqua Computer e22a7cba64 RAM Code Refactoring (#108)
RAM Code Refactoring
Added Virtual Memory

Thanks to @aquacomputer
2019-07-25 19:00:05 +02:00

63 lines
2.6 KiB
C#

// Mozilla Public License 2.0
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// Copyright (C) LibreHardwareMonitor and Contributors
// All Rights Reserved
using System.Runtime.InteropServices;
using OpenHardwareMonitor.Interop;
namespace OpenHardwareMonitor.Hardware.RAM {
internal class GenericRAM : Hardware {
private Sensor physicalMemoryUsed;
private Sensor physicalMemoryAvailable;
private Sensor physicalMemoryLoad;
private Sensor virtualMemoryUsed;
private Sensor virtualMemoryAvailable;
private Sensor virtualMemoryLoad;
public GenericRAM(string name, ISettings settings)
: base(name, new Identifier("ram"), settings) {
physicalMemoryUsed = new Sensor("Memory Used", 0, SensorType.Data, this, settings);
ActivateSensor(physicalMemoryUsed);
physicalMemoryAvailable = new Sensor("Memory Available", 1, SensorType.Data, this, settings);
ActivateSensor(physicalMemoryAvailable);
physicalMemoryLoad = new Sensor("Memory", 0, SensorType.Load, this, settings);
ActivateSensor(physicalMemoryLoad);
virtualMemoryUsed = new Sensor("Virtual Memory Used", 2, SensorType.Data, this, settings);
ActivateSensor(virtualMemoryUsed);
virtualMemoryAvailable = new Sensor("Virtual Memory Available", 3, SensorType.Data, this, settings);
ActivateSensor(virtualMemoryAvailable);
virtualMemoryLoad = new Sensor("Virtual Memory", 1, SensorType.Load, this, settings);
ActivateSensor(virtualMemoryLoad);
}
public override HardwareType HardwareType {
get {
return HardwareType.RAM;
}
}
public override void Update() {
Kernel32.MemoryStatusEx status = new Kernel32.MemoryStatusEx();
status.Length = (uint)Marshal.SizeOf<Kernel32.MemoryStatusEx>();
if (!Kernel32.GlobalMemoryStatusEx(ref status))
return;
physicalMemoryUsed.Value = (float)(status.TotalPhysicalMemory - status.AvailablePhysicalMemory) / (1024 * 1024 * 1024);
physicalMemoryAvailable.Value = (float)status.AvailablePhysicalMemory / (1024 * 1024 * 1024);
physicalMemoryLoad.Value = 100.0f - (100.0f * status.AvailablePhysicalMemory) / status.TotalPhysicalMemory;
virtualMemoryUsed.Value = (float)(status.TotalPageFile - status.AvailPageFile) / (1024 * 1024 * 1024);
virtualMemoryAvailable.Value = (float)status.AvailPageFile / (1024 * 1024 * 1024);
virtualMemoryLoad.Value = 100.0f - (100.0f * status.AvailPageFile) / status.TotalPageFile;
}
}
}