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");
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
, 0x0D22BDD7E, NVAPI
, 0)
33 HC_LOAD_ADDR(nvapi
, NvAPI_GetErrorMessage
, NVAPI_GETERRORMESSAGE
, nvapi_QueryInterface
, 0x6C2D048C, NVAPI
, 0)
34 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetDynamicPstatesInfoEx
, NVAPI_GPU_GETDYNAMICPSTATESINFOEX
, nvapi_QueryInterface
, 0x60DED2ED, NVAPI
, 0)
35 HC_LOAD_ADDR(nvapi
, NvAPI_EnumPhysicalGPUs
, NVAPI_ENUMPHYSICALGPUS
, nvapi_QueryInterface
, 0xE5AC921F, 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)
42 void nvapi_close (NVAPI_PTR
*nvapi
)
47 hc_dlclose (nvapi
->lib
);
53 int hm_NvAPI_Initialize (NVAPI_PTR
*nvapi
)
55 if (!nvapi
) return (-1);
57 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Initialize ();
59 if (NvAPI_rc
== NVAPI_LIBRARY_NOT_FOUND
) NvAPI_rc
= NVAPI_OK
; // not a bug
61 if (NvAPI_rc
!= NVAPI_OK
)
63 NvAPI_ShortString string
= { 0 };
65 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
67 log_info ("WARN: %s %d %s\n", "NvAPI_Initialize()", NvAPI_rc
, string
);
73 int hm_NvAPI_Unload (NVAPI_PTR
*nvapi
)
75 if (!nvapi
) return (-1);
77 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Unload ();
79 if (NvAPI_rc
!= NVAPI_OK
)
81 NvAPI_ShortString string
= { 0 };
83 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
85 log_info ("WARN: %s %d %s\n", "NvAPI_Unload()", NvAPI_rc
, string
);
91 int hm_NvAPI_GetErrorMessage (NVAPI_PTR
*nvapi
, NvAPI_Status NvAPI_rc
, NvAPI_ShortString string
)
93 if (!nvapi
) return (-1);
95 return nvapi
->NvAPI_GetErrorMessage (NvAPI_rc
, string
);
98 int hm_NvAPI_EnumPhysicalGPUs (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle nvGPUHandle
[NVAPI_MAX_PHYSICAL_GPUS
], NvU32
*pGpuCount
)
100 if (!nvapi
) return (-1);
102 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_EnumPhysicalGPUs (nvGPUHandle
, pGpuCount
);
104 if (NvAPI_rc
!= NVAPI_OK
)
106 NvAPI_ShortString string
= { 0 };
108 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
110 log_info ("WARN: %s %d %s\n", "NvAPI_EnumPhysicalGPUs()", NvAPI_rc
, string
);
116 int hm_NvAPI_GPU_GetThermalSettings (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 sensorIndex
, NV_GPU_THERMAL_SETTINGS
*pThermalSettings
)
118 if (!nvapi
) return (-1);
120 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetThermalSettings (hPhysicalGpu
, sensorIndex
, pThermalSettings
);
122 if (NvAPI_rc
!= NVAPI_OK
)
124 NvAPI_ShortString string
= { 0 };
126 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
128 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetThermalSettings()", NvAPI_rc
, string
);
134 int hm_NvAPI_GPU_GetTachReading (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGPU
, NvU32
*pValue
)
136 if (!nvapi
) return (-1);
138 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetTachReading (hPhysicalGPU
, pValue
);
140 if (NvAPI_rc
!= NVAPI_OK
)
142 NvAPI_ShortString string
= { 0 };
144 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
146 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetTachReading()", NvAPI_rc
, string
);
152 int hm_NvAPI_GPU_GetDynamicPstatesInfoEx (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_DYNAMIC_PSTATES_INFO_EX
*pDynamicPstatesInfoEx
)
154 if (!nvapi
) return (-1);
156 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetDynamicPstatesInfoEx (hPhysicalGpu
, pDynamicPstatesInfoEx
);
158 if (NvAPI_rc
!= NVAPI_OK
)
160 NvAPI_ShortString string
= { 0 };
162 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
164 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetDynamicPstatesInfoEx()", NvAPI_rc
, string
);
172 void __security_check_cookie (uintptr_t _StackCookie
)
177 void __GSHandlerCheck ()