获取nvidia显卡温度的方法

该博客详细介绍了如何通过NVIDIA API(NvAPI)来初始化并获取显卡温度。首先进行NvAPI的初始化,然后查找并获取显示卡的句柄,接着获取物理GPU的句柄和数量,最后调用NvAPI_GPU_GetThermalSettings函数获取GPU的当前温度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

int i=0;
unsigned long cnt;
NvAPI_Status status;
NvDisplayHandle hDisplay_a[NVAPI_MAX_PHYSICAL_GPUS * 2] = {0};
NvPhysicalGpuHandle nvGPUHandle;
//-----------------------------------------------------

status = NvAPI_Initialize();//初始化,nvapi.dll只能动态加载
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
TRACE("NVAPI NvAPI_Initialize: %s/n", string);
return false;
}

//-----------------------------------------------------

NV_DISPLAY_DRIVER_VERSION version = {0};
version.version = NV_DISPLAY_DRIVER_VERSION_VER;
status = NvAPI_GetDisplayDriverVersion(NVAPI_DEFAULT_HANDLE, &version);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
TRACE("NVAPI NvAPI_GetDisplayDriverVersion: %s/n", string);
return false;
}

//-----------------------------------------------------

status = NvAPI_EnumNvidiaDisplayHandle(i, &hDisplay_a[i]);//查找显示卡
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
TRACE("NVAPI NvAPI_EnumNvidiaDisplayHandle: %s/n", string);
return false;
}

//-----------------------------------------------------

status = NvAPI_GetPhysicalGPUsFromDisplay(hDisplay_a[0], &nvGPUHandle, &cnt);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
TRACE("NVAPI NvAPI_GetPhysicalGPUsFromDisplay: %s/n", string);
return false;
}

//-----------------------------------------------------
NvU32 temp = 0;

NV_GPU_THERMAL_SETTINGS set = {0};
set.version = NV_GPU_THERMAL_SETTINGS_VER;
set.count = NVAPI_MAX_THERMAL_SENSORS_PER_GPU;
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].controller = NVAPI_THERMAL_CONTROLLER_UNKNOWN;
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].currentTemp = temp;//当前温度
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].target = NVAPI_THERMAL_TARGET_GPU;

status = NvAPI_GPU_GetThermalSettings(nvGPUHandle, 0 ,&set);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
TRACE("NVAPI NvAPI_GPU_GetThermalSettings: %s/n", string);
return false;
}

TRACE("NVAPI Current Temp: %u C/n",set.sensor[0].currentTemp);
TRACE("NVAPI GPU Handle: %u/n",nvGPUHandle); // TODO: Add your control notification handler code here
return 2; 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值