2 * Author......: Jens Steube <jens.steube@gmail.com>
8 int nvapi_init (NVAPI_PTR
*nvapi
)
10 if (!nvapi
) return (-1);
12 memset (nvapi
, 0, sizeof (NVAPI_PTR
));
15 nvapi
->lib
= hc_dlopen ("nvapi64.dll");
17 nvapi
->lib
= hc_dlopen ("nvapi.dll");
23 log_info ("WARNING: load NVAPI library failed, proceed without NVAPI HWMon enabled.");
28 HC_LOAD_FUNC(nvapi
, nvapi_QueryInterface
, NVAPI_QUERYINTERFACE
, NVAPI
, 0)
29 HC_LOAD_ADDR(nvapi
, NvAPI_Initialize
, NVAPI_INITIALIZE
, nvapi_QueryInterface
, 0x0150E828, NVAPI
, 0)
30 HC_LOAD_ADDR(nvapi
, NvAPI_Unload
, NVAPI_UNLOAD
, nvapi_QueryInterface
, 0x0D22BDD7E, NVAPI
, 0)
31 HC_LOAD_ADDR(nvapi
, NvAPI_GetErrorMessage
, NVAPI_GETERRORMESSAGE
, nvapi_QueryInterface
, 0x6C2D048C, NVAPI
, 0)
32 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetDynamicPstatesInfoEx
, NVAPI_GPU_GETDYNAMICPSTATESINFOEX
, nvapi_QueryInterface
, 0x60DED2ED, NVAPI
, 0)
33 HC_LOAD_ADDR(nvapi
, NvAPI_EnumPhysicalGPUs
, NVAPI_ENUMPHYSICALGPUS
, nvapi_QueryInterface
, 0xE5AC921F, NVAPI
, 0)
34 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetThermalSettings
, NVAPI_GPU_GETTHERMALSETTINGS
, nvapi_QueryInterface
, 0xE3640A56, NVAPI
, 0)
35 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetTachReading
, NVAPI_GPU_GETTACHREADING
, nvapi_QueryInterface
, 0x5F608315, NVAPI
, 0)
40 void nvapi_close (NVAPI_PTR
*nvapi
)
45 hc_dlclose (nvapi
->lib
);
51 int hm_NvAPI_Initialize (NVAPI_PTR
*nvapi
)
53 if (!nvapi
) return (-1);
55 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Initialize ();
57 if (NvAPI_rc
== NVAPI_LIBRARY_NOT_FOUND
) NvAPI_rc
= NVAPI_OK
; // not a bug
59 if (NvAPI_rc
!= NVAPI_OK
)
61 NvAPI_ShortString string
;
63 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
65 log_info ("WARN: %s %d %s\n", "NvAPI_Initialize()", NvAPI_rc
, string
);
71 int hm_NvAPI_Unload (NVAPI_PTR
*nvapi
)
73 if (!nvapi
) return (-1);
75 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Unload ();
77 if (NvAPI_rc
!= NVAPI_OK
)
79 NvAPI_ShortString string
;
81 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
83 log_info ("WARN: %s %d %s\n", "NvAPI_Unload()", NvAPI_rc
, string
);
89 int hm_NvAPI_GetErrorMessage (NVAPI_PTR
*nvapi
, NvAPI_Status NvAPI_rc
, NvAPI_ShortString string
)
91 if (!nvapi
) return (-1);
93 return nvapi
->NvAPI_GetErrorMessage (NvAPI_rc
, string
);
96 int hm_NvAPI_EnumPhysicalGPUs (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle nvGPUHandle
[NVAPI_MAX_PHYSICAL_GPUS
], NvU32
*pGpuCount
)
98 if (!nvapi
) return (-1);
100 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_EnumPhysicalGPUs (nvGPUHandle
, pGpuCount
);
102 if (NvAPI_rc
!= NVAPI_OK
)
104 NvAPI_ShortString string
;
106 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
108 log_info ("WARN: %s %d %s\n", "NvAPI_EnumPhysicalGPUs()", NvAPI_rc
, string
);
114 int hm_NvAPI_GPU_GetThermalSettings (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 sensorIndex
, NV_GPU_THERMAL_SETTINGS
*pThermalSettings
)
116 if (!nvapi
) return (-1);
118 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetThermalSettings (hPhysicalGpu
, sensorIndex
, pThermalSettings
);
120 if (NvAPI_rc
!= NVAPI_OK
)
122 NvAPI_ShortString string
;
124 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
126 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetThermalSettings()", NvAPI_rc
, string
);
132 int hm_NvAPI_GPU_GetTachReading (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGPU
, NvU32
*pValue
)
134 if (!nvapi
) return (-1);
136 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetTachReading (hPhysicalGPU
, pValue
);
138 if (NvAPI_rc
!= NVAPI_OK
)
140 NvAPI_ShortString string
;
142 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
144 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetTachReading()", NvAPI_rc
, string
);
150 int hm_NvAPI_GPU_GetDynamicPstatesInfoEx (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_DYNAMIC_PSTATES_INFO_EX
*pDynamicPstatesInfoEx
)
152 if (!nvapi
) return (-1);
154 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetDynamicPstatesInfoEx (hPhysicalGpu
, pDynamicPstatesInfoEx
);
156 if (NvAPI_rc
!= NVAPI_OK
)
158 NvAPI_ShortString string
;
160 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
162 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetDynamicPstatesInfoEx()", NvAPI_rc
, string
);
170 void __security_check_cookie (uintptr_t _StackCookie
)
175 void __GSHandlerCheck ()