Varun.NvAPIWrapper.Net 9.0.4

dotnet add package Varun.NvAPIWrapper.Net --version 9.0.4
                    
NuGet\Install-Package Varun.NvAPIWrapper.Net -Version 9.0.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Varun.NvAPIWrapper.Net" Version="9.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Varun.NvAPIWrapper.Net" Version="9.0.4" />
                    
Directory.Packages.props
<PackageReference Include="Varun.NvAPIWrapper.Net" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Varun.NvAPIWrapper.Net --version 9.0.4
                    
#r "nuget: Varun.NvAPIWrapper.Net, 9.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Varun.NvAPIWrapper.Net@9.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Varun.NvAPIWrapper.Net&version=9.0.4
                    
Install as a Cake Addin
#tool nuget:?package=Varun.NvAPIWrapper.Net&version=9.0.4
                    
Install as a Cake Tool

<img src="NvAPIWrapper/Icon.png" width="24" alt="NvAPIWrapper"> NvAPIWrapper-V (Modernized NVIDIA NVAPI Wrapper)

NuGet Downloads

Fork of falahati/NvAPIWrapper with safe modernization work focused on newer NVIDIA drivers/GPUs and better fallback behavior on older systems.

  • Repository: https://github.com/varun875/NvAPIWrapper-V
  • Package ID: Varun.NvAPIWrapper.Net
  • Current package version in this repo: 9.0.4
  • Library target framework: net6.0
  • Library language version: C# 9.0

What Changed In This Fork

1. R580-era modern function mappings added

Modern IDs and delegates were wired for:

  • NvAPI_GPU_GetGspFeatures
  • NvAPI_GPU_NVLINK_GetCaps
  • NvAPI_SYS_GetDisplayDriverInfo
  • NvAPI_SYS_GetPhysicalGPUs
  • NvAPI_SYS_GetLogicalGPUs
  • NvAPI_RegisterRiseCallback
  • NvAPI_RequestRise
  • NvAPI_UninstallRise

2. Safe capability-first APIs (Try*) added

New Try* wrappers were added so unsupported drivers/GPUs do not throw in common telemetry paths:

  • GPUApi.TryGetGSPInfo
  • GPUApi.TryGetNVLinkCaps
  • GPUApi.TryGetPhysicalGPUHandleData
  • GPUApi.TryGetLogicalGPUHandleData
  • GPUApi.TryClientPowerTopologyGetStatus
  • GPUApi.TryClientPowerPoliciesGetStatus
  • GPUApi.TryClientPowerPoliciesGetInfo
  • GPUApi.TryGetPerformancePoliciesStatus
  • GPUApi.TryGetPerformanceDecreaseInfo
  • GPUApi.TryGetCurrentPerformanceState
  • GeneralApi.TryGetDisplayDriverInfo
  • NVIDIA.TryGetDisplayDriverInfo

3. High-level GPU improvements

  • PhysicalGPU.GetPhysicalGPUs() and LogicalGPU.GetLogicalGPUs() now try modern metadata enumeration first, then fall back to legacy enumeration.
  • Added PhysicalGPU.GSPFirmwareVersion
  • Added PhysicalGPU.NVLinkCapabilities
  • Added PhysicalGPU.IsNVLinkSupported
  • Added power telemetry snapshot support:
    • PhysicalGPU.TryGetPowerTelemetrySnapshot(out GPUPowerTelemetrySnapshot?)
    • PhysicalGPU.TryGetEstimatedBoardPowerUsageInWatts(...)
    • PhysicalGPU.TryGetEstimatedGPUPowerUsageInWatts(...)
  • Added safe thermal/usage helpers:
    • GPUThermalInformation.TryGetCurrentThermalLevel(...)
    • GPUThermalInformation.TryGetThermalSensors(...)
    • GPUUsageInformation.TryGetUtilizationDomainsStatus(...)
    • GPUUsageInformation.TryGetDynamicPerformanceStatesEnabled(...)
    • GPUPowerTopologyInformation.TryGetPowerTopologyEntries(...)
    • GPUPowerTopologyInformation.TryGetPowerUsageInPercent(...)
    • GPUPowerTopologyInformation.TryGetEstimatedPowerUsageInWatts(...)

4. Updated enum coverage for modern GPU reporting

  • Memory: GDDR6, GDDR6X, GDDR7, HBM2, HBM2e, HBM3, HBM3e, LPDDR5, DDR5
  • PCIe: PCIe4, PCIe5 (plus display formatting updates)
  • System: Workstation, DataCenter, Hyperscale, Edge
  • Public clock domains: BaseClock, VideoEncode, Tensor, Display
  • Voltage domains: PCIeCore, SOCCore, Memory

5. Packaging metadata modernized for NuGet

  • Uses modern package metadata:
    • <license type="file">
    • <icon>
    • <readme>
  • Package includes:
    • LICENSE
    • README.md
    • Icon.png

Quick Start

using NvAPIWrapper;
using NvAPIWrapper.GPU;

NVIDIA.Initialize();

foreach (var gpu in PhysicalGPU.GetPhysicalGPUs())
{
    Console.WriteLine(gpu.FullName);

    // Modern capability data with safe fallback behavior
    Console.WriteLine($"GSP FW: {gpu.GSPFirmwareVersion ?? "N/A"}");
    Console.WriteLine($"NVLink supported: {gpu.IsNVLinkSupported}");

    // Power telemetry snapshot (when available)
    if (gpu.TryGetPowerTelemetrySnapshot(out var snapshot) && snapshot != null)
    {
        Console.WriteLine($"GPU power %: {snapshot.GPUPowerUsageInPercent}");
        Console.WriteLine($"Board power %: {snapshot.BoardPowerUsageInPercent}");
    }
}

NVIDIA.Unload();

Power In Watts (Important Note)

NVAPI commonly reports power telemetry as percentages. The new watt helpers estimate watts by multiplying:

powerPercent * providedPowerLimitWatts / 100

So these values are estimates and depend on the limit you provide (for example board TGP/TDP).

Build And Pack

dotnet build NvAPIWrapper\NvAPIWrapper.csproj -c Release -p:SignAssembly=false
dotnet pack NvAPIWrapper\NvAPIWrapper.csproj -c Release -p:SignAssembly=false

Artifacts are generated in Release\.

API Surface

  • NvAPIWrapper.Display - Display and display-control APIs
  • NvAPIWrapper.GPU - GPU APIs and high-level telemetry helpers
  • NvAPIWrapper.Mosaic - Mosaic/Surround APIs
  • NvAPIWrapper.DRS - Driver profile APIs
  • NvAPIWrapper.Stereo - Stereo APIs
  • NvAPIWrapper.Native - Low-level NVAPI delegates/structures
  • NvAPIWrapper.NVIDIA - General system entry points

Compatibility Philosophy

This fork prioritizes:

  1. Additive changes
  2. Capability checks before feature usage
  3. Legacy fallback paths to avoid regressions on older drivers/GPUs

License

Copyright (C) 2017-2026 Soroush Falahati and contributors

This project is licensed under LGPL v3. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
9.0.4 104 9/9/2026
9.0.3 224 7/15/2026
9.0.2 173 3/4/2026
9.0.1 151 2/17/2026
8.9.0 177 2/13/2026 8.9.0 is deprecated because it is no longer maintained.

Version 9.0.4

 - Test project (NvAPIWrapper.Tests) retargeted to net8.0; 151 tests passing
   with zero build warnings.
 - Fixed GPUPowerSpecDatabase longest-pattern-first matching: laptop GPU names
   (e.g. "RTX 4090 Laptop GPU") now resolve to the laptop entry instead of the
   desktop entry; added a bare H100 fallback entry.
 - Nullable annotations on GPUPowerSpecDatabase.TryGetSpec/GetDefaultTDP and
   GPUFamilyClassifier.DetectFamily.
 - Silenced all 41 CS1591 missing-XML-doc warnings (fan cooler V1 structs,
   thermal cooler APIs, monitor capability properties, ToString overrides).
 - Consolidated overlapping 9.0.2 summary docs into RELEASE_NOTES_9.0.x.md;
   removed Icon.psd (Photoshop source) from git tracking.
 - No breaking changes to the library API surface.