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