2 * Authors.....: Jens Steube <jens.steube@gmail.com>
3 * Gabriele Gristina <matrix@hashcat.net>
10 int nvapi_init (NVAPI_PTR
*nvapi
)
12 if (!nvapi
) return (-1);
14 memset (nvapi
, 0, sizeof (NVAPI_PTR
));
17 nvapi
->lib
= hc_dlopen ("nvapi64.dll");
19 nvapi
->lib
= hc_dlopen ("nvapi.dll");
24 //if (data.quiet == 0)
25 // log_info ("WARNING: load NVAPI library failed, proceed without NVAPI HWMon enabled.");
30 HC_LOAD_FUNC(nvapi
, nvapi_QueryInterface
, NVAPI_QUERYINTERFACE
, NVAPI
, 0)
31 HC_LOAD_ADDR(nvapi
, NvAPI_Initialize
, NVAPI_INITIALIZE
, nvapi_QueryInterface
, 0x0150E828, NVAPI
, 0)
32 HC_LOAD_ADDR(nvapi
, NvAPI_Unload
, NVAPI_UNLOAD
, nvapi_QueryInterface
, 0xD22BDD7E, NVAPI
, 0)
33 HC_LOAD_ADDR(nvapi
, NvAPI_GetErrorMessage
, NVAPI_GETERRORMESSAGE
, nvapi_QueryInterface
, 0x6C2D048C, NVAPI
, 0)
34 HC_LOAD_ADDR(nvapi
, NvAPI_EnumPhysicalGPUs
, NVAPI_ENUMPHYSICALGPUS
, nvapi_QueryInterface
, 0xE5AC921F, NVAPI
, 0)
35 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetDynamicPstatesInfoEx
, NVAPI_GPU_GETDYNAMICPSTATESINFOEX
, nvapi_QueryInterface
, 0x60DED2ED, NVAPI
, 0)
36 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetThermalSettings
, NVAPI_GPU_GETTHERMALSETTINGS
, nvapi_QueryInterface
, 0xE3640A56, NVAPI
, 0)
37 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetTachReading
, NVAPI_GPU_GETTACHREADING
, nvapi_QueryInterface
, 0x5F608315, NVAPI
, 0)
38 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetCoolerSettings
, NVAPI_GPU_GETCOOLERSETTINGS
, nvapi_QueryInterface
, 0xDA141340, NVAPI
, 0)
39 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_SetCoolerLevels
, NVAPI_GPU_SETCOOLERLEVELS
, nvapi_QueryInterface
, 0x891FA0AE, NVAPI
, 0)
40 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetAllClockFrequencies
, NVAPI_GPU_GETALLCLOCKFREQUENCIES
, nvapi_QueryInterface
, 0xDCB616C3, NVAPI
, 0)
41 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetCurrentPCIEDownstreamWidth
, NVAPI_GPU_GETCURRENTPCIEDOWNSTREAMWIDTH
, nvapi_QueryInterface
, 0xD048C3B1, NVAPI
, 0)
42 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetPerfDecreaseInfo
, NVAPI_GPU_GETPERFDECREASEINFO
, nvapi_QueryInterface
, 0x7F7F4600, NVAPI
, 0)
47 void nvapi_close (NVAPI_PTR
*nvapi
)
52 hc_dlclose (nvapi
->lib
);
58 int hm_NvAPI_Initialize (NVAPI_PTR
*nvapi
)
60 if (!nvapi
) return (-1);
62 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Initialize ();
64 if (NvAPI_rc
== NVAPI_LIBRARY_NOT_FOUND
) NvAPI_rc
= NVAPI_OK
; // not a bug
66 if (NvAPI_rc
!= NVAPI_OK
)
68 NvAPI_ShortString string
= { 0 };
70 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
72 log_info ("WARN: %s %d %s\n", "NvAPI_Initialize()", NvAPI_rc
, string
);
78 int hm_NvAPI_Unload (NVAPI_PTR
*nvapi
)
80 if (!nvapi
) return (-1);
82 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Unload ();
84 if (NvAPI_rc
!= NVAPI_OK
)
86 NvAPI_ShortString string
= { 0 };
88 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
90 log_info ("WARN: %s %d %s\n", "NvAPI_Unload()", NvAPI_rc
, string
);
96 int hm_NvAPI_GetErrorMessage (NVAPI_PTR
*nvapi
, NvAPI_Status NvAPI_rc
, NvAPI_ShortString string
)
98 if (!nvapi
) return (-1);
100 return nvapi
->NvAPI_GetErrorMessage (NvAPI_rc
, string
);
103 int hm_NvAPI_EnumPhysicalGPUs (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle nvGPUHandle
[NVAPI_MAX_PHYSICAL_GPUS
], NvU32
*pGpuCount
)
105 if (!nvapi
) return (-1);
107 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_EnumPhysicalGPUs (nvGPUHandle
, pGpuCount
);
109 if (NvAPI_rc
!= NVAPI_OK
)
111 NvAPI_ShortString string
= { 0 };
113 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
115 log_info ("WARN: %s %d %s\n", "NvAPI_EnumPhysicalGPUs()", NvAPI_rc
, string
);
121 int hm_NvAPI_GPU_GetThermalSettings (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 sensorIndex
, NV_GPU_THERMAL_SETTINGS
*pThermalSettings
)
123 if (!nvapi
) return (-1);
125 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetThermalSettings (hPhysicalGpu
, sensorIndex
, pThermalSettings
);
127 if (NvAPI_rc
!= NVAPI_OK
)
129 NvAPI_ShortString string
= { 0 };
131 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
133 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetThermalSettings()", NvAPI_rc
, string
);
139 int hm_NvAPI_GPU_GetTachReading (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGPU
, NvU32
*pValue
)
141 if (!nvapi
) return (-1);
143 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetTachReading (hPhysicalGPU
, pValue
);
145 if (NvAPI_rc
!= NVAPI_OK
)
147 NvAPI_ShortString string
= { 0 };
149 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
151 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetTachReading()", NvAPI_rc
, string
);
157 int hm_NvAPI_GPU_GetCoolerSettings (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 coolerIndex
, NV_GPU_COOLER_SETTINGS
*pCoolerSettings
)
159 if (!nvapi
) return (-1);
161 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetCoolerSettings (hPhysicalGpu
, coolerIndex
, pCoolerSettings
);
163 if (NvAPI_rc
!= NVAPI_OK
)
165 NvAPI_ShortString string
= { 0 };
167 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
169 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetCoolerSettings()", NvAPI_rc
, string
);
175 int hm_NvAPI_GPU_SetCoolerLevels (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 coolerIndex
, NV_GPU_COOLER_LEVELS
*pCoolerLevels
)
177 if (!nvapi
) return (-1);
179 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_SetCoolerLevels (hPhysicalGpu
, coolerIndex
, pCoolerLevels
);
181 if (NvAPI_rc
!= NVAPI_OK
)
183 NvAPI_ShortString string
= { 0 };
185 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
187 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_SetCoolerLevels()", NvAPI_rc
, string
);
193 int hm_NvAPI_GPU_GetDynamicPstatesInfoEx (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_DYNAMIC_PSTATES_INFO_EX
*pDynamicPstatesInfoEx
)
195 if (!nvapi
) return (-1);
197 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetDynamicPstatesInfoEx (hPhysicalGpu
, pDynamicPstatesInfoEx
);
199 if (NvAPI_rc
!= NVAPI_OK
)
201 NvAPI_ShortString string
= { 0 };
203 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
205 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetDynamicPstatesInfoEx()", NvAPI_rc
, string
);
211 int hm_NvAPI_GPU_GetAllClockFrequencies (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_CLOCK_FREQUENCIES
*pClkFreqs
)
213 if (!nvapi
) return (-1);
215 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetAllClockFrequencies (hPhysicalGpu
, pClkFreqs
);
217 if (NvAPI_rc
!= NVAPI_OK
)
219 NvAPI_ShortString string
= { 0 };
221 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
223 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetAllClockFrequencies()", NvAPI_rc
, string
);
229 int hm_NvAPI_GPU_GetCurrentPCIEDownstreamWidth (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32
*pWidth
)
231 if (!nvapi
) return (-1);
233 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetCurrentPCIEDownstreamWidth (hPhysicalGpu
, pWidth
);
235 if (NvAPI_rc
!= NVAPI_OK
)
237 NvAPI_ShortString string
= { 0 };
239 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
241 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetCurrentPCIEDownstreamWidth()", NvAPI_rc
, string
);
247 int hm_NvAPI_GPU_GetPerfDecreaseInfo (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32
*pPerfDecrInfo
)
249 if (!nvapi
) return (-1);
251 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetPerfDecreaseInfo (hPhysicalGpu
, pPerfDecrInfo
);
253 if (NvAPI_rc
!= NVAPI_OK
)
255 NvAPI_ShortString string
= { 0 };
257 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
259 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetPerfDecreaseInfo()", NvAPI_rc
, string
);
267 void __security_check_cookie (uintptr_t _StackCookie
)
272 void __GSHandlerCheck ()