Skip to content
Kurou edited this page Jul 9, 2026 · 4 revisions

NativeHardwareMonitor

A native C++ Rainmeter plugin that reads real-time hardware metrics — GPU, CPU, Memory, Network, Storage, Ping, Battery, System, Motherboard, and Display — directly from vendor APIs (NVML, NVAPI, ADLX, ADL2, IGCL) and Windows APIs (WMI, PDH, Win32). No third-party monitoring tool, no kernel driver, no service — a single DLL.

Contents

Requirements

  • Windows 10/11, x64 (the plugin is 64-bit; Rainmeter is 64-bit)
  • Rainmeter installed
  • NVIDIA GPU: NVML/NVAPI ship with the driver — nothing extra
  • AMD GPU: ADLX/ADL2 ship with the driver — nothing extra
  • Intel GPU: IGCL (ControlLib.dll) ships with the driver — nothing extra
  • No kernel driver, no service, no elevated install

Install

  1. Get NativeHardwareMonitor.dll (download, or build — see Installation)
  2. Copy it into %APPDATA%\Rainmeter\Plugins\
  3. Restart Rainmeter
  4. Reference it from any measure with Plugin=NativeHardwareMonitor

Quick example

[MeasureGpuTemp]
Measure=Plugin
Plugin=NativeHardwareMonitor
Category=GPU
Metric=Temperature
Device=0

[MeterGpuTemp]
Meter=String
MeasureName=MeasureGpuTemp
Text=GPU: %1 °C

Measure options (summary)

Option Required Values Notes
Category yes GPU, CPU, Memory, Network, Storage, Ping, Battery, System, Motherboard, Display Case-insensitive; short aliases also accepted
Metric yes category-dependent — see Metrics Reference Case-insensitive; short aliases also accepted
Device no (default 0) integer index Which GPU / core / RAM pool / adapter / disk — meaning is per-category
Host Ping only hostname or IP The target to ping. Replaces Device= for the Ping category
PingInterval Ping only (default 1000) milliseconds How often the background ICMP echo fires
UpdateOverride no milliseconds Poll this category on a background thread at this rate, independent of the skin's Update=. Omit to follow Rainmeter's tick. (UpdateRate is a reserved Rainmeter keyword — do not use it)
Debug no (default 0) 0, 1, 2 1 = startup logging, 2 = all registration/reload events to the Rainmeter log. Never logs metric values

Full detail: Configuring Measures.

Reading the value

Every measure exposes a numeric value and, for identity metrics, a string value — Rainmeter picks whichever fits the meter:

  • Numeric metrics (Usage, Temperature, …) → %1 shows the number.
  • String metrics (GPU Name, CPU Vendor, Storage VolumeLabel, GPU ThrottleReasons, …) → %1 shows the text, but only inside a Meter=String. Bound to a Bar/Line/Histogram meter, a string metric reads -1 (those meters only use the numeric side).

Value semantics (numeric side)

Value Meaning
-2 Plugin-level error (bad handle, module failed to initialize)
-1 Metric not supported on this hardware/driver/BIOS — not an error, genuinely unavailable
0 or positive A real reading

-1 is common and expected — not every vendor SDK or motherboard exposes every value. See Metrics Reference for the per-category support, and Quirks & Troubleshooting for what's permanently unavailable and why.

Clone this wiki locally