X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fext_nvml.c;h=6c3b6b48c7de461f803a116e8b0482ec070cfa96;hb=2b7e36b0426713031691f5a6f10711055a2c0505;hp=8431354fc2c7b14cfa61ffee93e891fc5e7209a2;hpb=62390b9cfa15ef18cdbf48ef5790d399b23e4c76;p=hashcat.git diff --git a/src/ext_nvml.c b/src/ext_nvml.c index 8431354..6c3b6b4 100644 --- a/src/ext_nvml.c +++ b/src/ext_nvml.c @@ -20,9 +20,35 @@ int nvml_init (NVML_PTR *nvml) { DWORD BufferSize = 1024; - char *Buffer = (char *) mymalloc (BufferSize); + DWORD Type = REG_SZ; - RegGetValue (HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\NVSMI", "NVSMIPATH", RRF_RT_ANY, NULL, (PVOID) Buffer, &BufferSize); + char *Buffer = (char *) mymalloc (BufferSize + 1); + + HKEY hKey = 0; + + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\NVIDIA Corporation\\Global\\NVSMI"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) + { + if (RegQueryValueEx (hKey, TEXT("NVSMIPATH"), NULL, &Type, (PVOID) Buffer, &BufferSize) == ERROR_SUCCESS) + { + Buffer[BufferSize] = 0; + } + else + { + if (data.quiet == 0) + log_info ("WARNING: NVML library load failed, proceed without NVML HWMon enabled."); + + return -1; + } + + RegCloseKey (hKey); + } + else + { + if (data.quiet == 0) + log_info ("WARNING: NVML library load failed, proceed without NVML HWMon enabled."); + + return -1; + } strcat (Buffer, "\\nvml.dll");