HardwareProviders.CPU

Retrieves CPUs installed on the system and relatives bus, clocks, voltages and temperatures.


Keywords
hardware, cpu, monitor, bus, clock, temperature, core, voltage, model, processor, processors, microarchitecture, intel, amd, package, power, powers, frequency, cpuid
License
MPL-2.0
Install
Install-Package HardwareProviders.CPU -Version 2.0.0

Documentation

Hardware Providers

Collection of libraries to explore hardware installed on the machine and relative parameters, including: clock, voltages and temperatures. For Dotnet Standard and 4.6

Component Purpose Standard .Net 4.6
HardwareProviders Contains base classes and interface to read and write directly on pc ports ✓ ✓
HardwareProviders.CPU Retrieves Intel and AMD processors installed and relative values ✓ ✓
HardwareProviders.HDD Retrieves hard drives and relative values ✓ ✓

This project contains code extracted from Open Hardware Monitor and is released under the same license

CPU library Usage

Retrieving information about the current state of CPUs is incredibly simple.

TROUBLESHOOTING: Depending on Windows version you may need to run it as administrator to retrieve all values.

using HardwareProviders;
using HardwareProviders.Board;
using HardwareProviders.CPU;
using HardwareProviders.HDD;
using System;
using System.Linq;

namespace TestApp
{
    class Program
    {
        static void Print(Sensor[] sensors)
        {
            if(sensors.Any())
            Console.WriteLine(string.Join(" ", sensors.Select(x => x.ToString())));
        }

        static void Main(string[] args)
        {
            var mainboard = new Mainboard();
            Console.WriteLine(mainboard.Smbios.BIOS.Vendor);

            var cpu = Cpu.Discover();

            foreach (var item in cpu)
            {
                Print(item.CoreTemperatures);
                Print(item.CoreClocks);
                Print(item.CorePowers);
                Print(item.CoreVoltages);
                Print(item.CoreClocks);
            }

            var hdd = HardDrive.Discover();

            foreach (var item in hdd)
            {
                foreach(var smart in item.SmartSensors)
                {
                    Console.WriteLine(smart.Key.Name);
                    Print(new[]{ smart.Value });
                }
            }
            Console.ReadKey();
        }
    }
}