From 919409cb28a2ef9e97d7b15046fed2c5a4d0500f Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周日, 15 3月 2020 11:00:50 +0800
Subject: [PATCH] fix cpuid

---
 src/library/os/windows/cpu_info.cpp |   44 ++++++++------------------------------------
 1 files changed, 8 insertions(+), 36 deletions(-)

diff --git a/src/library/os/windows/cpu_info.cpp b/src/library/os/windows/cpu_info.cpp
index cb41804..f4b0e81 100644
--- a/src/library/os/windows/cpu_info.cpp
+++ b/src/library/os/windows/cpu_info.cpp
@@ -41,42 +41,14 @@
 string CpuInfo::vendor() const {
 	// hypervisor flag false, try to get the vendor name, see if it's a virtual cpu
 	int cpui[4] = {0};
-	__cpuid(cpui, 0x0);
-	return string(reinterpret_cast<const char *>(cpui), 12);
+	__cpuidex(cpui, 0x0, 0x0);
+
+	char vendor[13];
+	memset(vendor, 0, sizeof(vendor));
+	*reinterpret_cast<int *>(vendor) = cpui[1];
+	*reinterpret_cast<int *>(vendor +4) = cpui[3];
+	*reinterpret_cast<int *>(vendor + 8) = cpui[2];
+	return string(vendor, 12);
 }
 }  // namespace os
-=======
-using namespace std;
-
-CpuInfo::CpuInfo() {}
-
-CpuInfo::~CpuInfo() {}
-/**
- * Detect Virtual machine using hypervisor bit.
- * @return true if the cpu hypervisor bit is set to 1
- */
-bool CpuInfo::is_hypervisor_set() const {
-	int cpui[4] = {0};
-	__cpuid(cpui, 0x1);
-
-	return ((cpui[2] >> 31) & 1);
-}
-
-uint32_t CpuInfo::model() const {
-	int cpui[4] = {0};
-	__cpuid(cpui, 0x1);
-	// ax bits 0-3 stepping,4-7 model,8-11 family id,12-13 processor type
-	//        14-15 reserved, 16-19 extended model, 20-27 extended family, 27-31 reserved
-	// bx bits 0-7 brand index
-	return (cpui[0] & 0x3FFF) | (cpui[0] & 0x3FF8000) >> 2 | (cpui[1] & 0xff) << 24;
-}
-
-string CpuInfo::vendor() const {
-	// hypervisor flag false, try to get the vendor name, see if it's a virtual cpu
-	int cpui[4] = {0};
-	__cpuid(cpui, 0x0);
-	return string(reinterpret_cast<const char *>(cpui), 12);
-}
-
->>>>>>> branch 'feature/pc_identifiers' of https://github.com/open-license-manager/open-license-manager.git
 } /* namespace license */

--
Gitblit v1.9.1