aboutsummaryrefslogtreecommitdiff
path: root/src/hardware_functions.cpp
diff options
context:
space:
mode:
authormac builder <mac at github.com>2019-08-13 20:01:42 +0200
committermac builder <mac at github.com>2019-08-13 20:01:42 +0200
commit2509cc5e0bf4d9c4bbd6798f71886e34cc8476b2 (patch)
tree7c94042d19a8e19fc7dfded6c848652d5784a04f /src/hardware_functions.cpp
parent5bdb57a8ba789f0a716360d775eedfbc29096c78 (diff)
get mac serial for hdid
Diffstat (limited to 'src/hardware_functions.cpp')
-rw-r--r--src/hardware_functions.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/hardware_functions.cpp b/src/hardware_functions.cpp
index 5d6b6ffa..bd6a6c3c 100644
--- a/src/hardware_functions.cpp
+++ b/src/hardware_functions.cpp
@@ -50,10 +50,31 @@ QString get_hdid()
}
#elif defined __APPLE__
+#include <CoreFoundation/CoreFoundation.h>
+#include <IOKit/IOKitLib.h>
+
QString get_hdid()
{
- //hdids are broken at this point anyways
- return "just a mac passing by";
+ CFStringRef serial;
+ char buffer[64] = {0};
+ QString hdid;
+ io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
+ IOServiceMatching("IOPlatformExpertDevice"));
+ if (platformExpert)
+ {
+ CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,
+ CFSTR(kIOPlatformSerialNumberKey),
+ kCFAllocatorDefault, 0);
+ if (serialNumberAsCFString) {
+ serial = (CFStringRef)serialNumberAsCFString;
+ }
+ if (CFStringGetCString(serial, buffer, 64, kCFStringEncodingUTF8)) {
+ hdid = buffer;
+ }
+
+ IOObjectRelease(platformExpert);
+ }
+ return hdid;
}
#else