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
));
18 nvapi
->lib
= hc_dlopen ("nvapi64.dll");
20 nvapi
->lib
= hc_dlopen ("nvapi.dll");
23 nvapi
->lib
= hc_dlopen ("nvapi.so", RTLD_NOW
); // uhm yes, but .. yeah
28 //if (data.quiet == 0)
29 // log_info ("WARNING: load NVAPI library failed, proceed without NVAPI HWMon enabled.");
34 HC_LOAD_FUNC(nvapi
, nvapi_QueryInterface
, NVAPI_QUERYINTERFACE
, NVAPI
, 0)
35 HC_LOAD_ADDR(nvapi
, NvAPI_Initialize
, NVAPI_INITIALIZE
, nvapi_QueryInterface
, 0x0150E828, NVAPI
, 0)
36 HC_LOAD_ADDR(nvapi
, NvAPI_Unload
, NVAPI_UNLOAD
, nvapi_QueryInterface
, 0xD22BDD7E, NVAPI
, 0)
37 HC_LOAD_ADDR(nvapi
, NvAPI_GetErrorMessage
, NVAPI_GETERRORMESSAGE
, nvapi_QueryInterface
, 0x6C2D048C, NVAPI
, 0)
38 HC_LOAD_ADDR(nvapi
, NvAPI_EnumPhysicalGPUs
, NVAPI_ENUMPHYSICALGPUS
, nvapi_QueryInterface
, 0xE5AC921F, NVAPI
, 0)
39 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetPerfPoliciesInfo
, NVAPI_GPU_GETPERFPOLICIESINFO
, nvapi_QueryInterface
, 0x409D9841, NVAPI
, 0)
40 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_GetPerfPoliciesStatus
, NVAPI_GPU_GETPERFPOLICIESSTATUS
, nvapi_QueryInterface
, 0x3D358A0C, NVAPI
, 0)
41 HC_LOAD_ADDR(nvapi
, NvAPI_GPU_SetCoolerLevels
, NVAPI_GPU_SETCOOLERLEVELS
, nvapi_QueryInterface
, 0x891FA0AE, NVAPI
, 0)
46 void nvapi_close (NVAPI_PTR
*nvapi
)
51 hc_dlclose (nvapi
->lib
);
57 int hm_NvAPI_Initialize (NVAPI_PTR
*nvapi
)
59 if (!nvapi
) return (-1);
61 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Initialize ();
63 if (NvAPI_rc
== NVAPI_LIBRARY_NOT_FOUND
) NvAPI_rc
= NVAPI_OK
; // not a bug
65 if (NvAPI_rc
!= NVAPI_OK
)
67 NvAPI_ShortString string
= { 0 };
69 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
71 log_info ("WARN: %s %d %s\n", "NvAPI_Initialize()", NvAPI_rc
, string
);
77 int hm_NvAPI_Unload (NVAPI_PTR
*nvapi
)
79 if (!nvapi
) return (-1);
81 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_Unload ();
83 if (NvAPI_rc
!= NVAPI_OK
)
85 NvAPI_ShortString string
= { 0 };
87 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
89 log_info ("WARN: %s %d %s\n", "NvAPI_Unload()", NvAPI_rc
, string
);
95 int hm_NvAPI_GetErrorMessage (NVAPI_PTR
*nvapi
, NvAPI_Status NvAPI_rc
, NvAPI_ShortString string
)
97 if (!nvapi
) return (-1);
99 return nvapi
->NvAPI_GetErrorMessage (NvAPI_rc
, string
);
102 int hm_NvAPI_EnumPhysicalGPUs (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle nvGPUHandle
[NVAPI_MAX_PHYSICAL_GPUS
], NvU32
*pGpuCount
)
104 if (!nvapi
) return (-1);
106 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_EnumPhysicalGPUs (nvGPUHandle
, pGpuCount
);
108 if (NvAPI_rc
!= NVAPI_OK
)
110 NvAPI_ShortString string
= { 0 };
112 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
114 log_info ("WARN: %s %d %s\n", "NvAPI_EnumPhysicalGPUs()", NvAPI_rc
, string
);
120 int hm_NvAPI_GPU_GetPerfPoliciesInfo (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_PERF_POLICIES_INFO_PARAMS_V1
*perfPolicies_info
)
122 if (!nvapi
) return (-1);
124 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetPerfPoliciesInfo (hPhysicalGpu
, perfPolicies_info
);
126 if (NvAPI_rc
!= NVAPI_OK
)
128 NvAPI_ShortString string
= { 0 };
130 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
132 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetPerfPoliciesInfo()", NvAPI_rc
, string
);
138 int hm_NvAPI_GPU_GetPerfPoliciesStatus (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1
*perfPolicies_status
)
140 if (!nvapi
) return (-1);
142 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_GetPerfPoliciesStatus (hPhysicalGpu
, perfPolicies_status
);
144 if (NvAPI_rc
!= NVAPI_OK
)
146 NvAPI_ShortString string
= { 0 };
148 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
150 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_GetPerfPoliciesStatus()", NvAPI_rc
, string
);
156 int hm_NvAPI_GPU_SetCoolerLevels (NVAPI_PTR
*nvapi
, NvPhysicalGpuHandle hPhysicalGpu
, NvU32 coolerIndex
, NV_GPU_COOLER_LEVELS
*pCoolerLevels
)
158 if (!nvapi
) return (-1);
160 NvAPI_Status NvAPI_rc
= nvapi
->NvAPI_GPU_SetCoolerLevels (hPhysicalGpu
, coolerIndex
, pCoolerLevels
);
162 if (NvAPI_rc
!= NVAPI_OK
)
164 NvAPI_ShortString string
= { 0 };
166 hm_NvAPI_GetErrorMessage (nvapi
, NvAPI_rc
, string
);
168 log_info ("WARN: %s %d %s\n", "NvAPI_GPU_SetCoolerLevels()", NvAPI_rc
, string
);
176 void __security_check_cookie (uintptr_t _StackCookie
)
181 void __GSHandlerCheck ()