aboutsummaryrefslogtreecommitdiff
path: root/client/src/hwid/hwid.h
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/hwid/hwid.h')
-rw-r--r--client/src/hwid/hwid.h38
1 files changed, 33 insertions, 5 deletions
diff --git a/client/src/hwid/hwid.h b/client/src/hwid/hwid.h
index 8fae489..445635d 100644
--- a/client/src/hwid/hwid.h
+++ b/client/src/hwid/hwid.h
@@ -1,10 +1,38 @@
#pragma once
-
+#include "../ui/ui.h"
namespace hwid {
- __forceinline std::string fetch() {
- nlohmann::json j;
- j["uid"] = 0;
- return j.dump();
+ struct hwid_data_t {
+ std::string gpu;
+
+ uint64_t uid;
+ };
+
+ __forceinline bool fetch(hwid_data_t& out) {
+ IDXGIDevice* dxgi_device;
+ if (ui::device->QueryInterface(&dxgi_device) != S_OK) {
+ return false;
+ }
+
+ IDXGIAdapter* adapter;
+ if (dxgi_device->GetParent(__uuidof(IDXGIAdapter), reinterpret_cast<void**>(&adapter)) != S_OK) {
+ return false;
+ }
+
+ DXGI_ADAPTER_DESC desc;
+ if (adapter->GetDesc(&desc) != S_OK) {
+ return false;
+ }
+
+ out.uid += desc.VendorId >> 1;
+ out.uid += desc.DeviceId >> 1;
+ out.uid += desc.DedicatedVideoMemory << 5;
+
+ out.gpu = util::wide_to_multibyte(desc.Description);
+
+ adapter->Release();
+ dxgi_device->Release();
+
+ return true;
}
}; \ No newline at end of file