From 75e4394d720c9cf8039a5e07110322c2b55bce8c Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周日, 08 3月 2020 21:45:16 +0800 Subject: [PATCH] Merge branch 'feature/pc_identifiers' of https://github.com/open-license-manager/open-license-manager.git into feature/pc_identifiers --- src/library/os/windows/cpu_info.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) diff --git a/src/library/os/windows/cpu_info.cpp b/src/library/os/windows/cpu_info.cpp index 764b2fe..cb41804 100644 --- a/src/library/os/windows/cpu_info.cpp +++ b/src/library/os/windows/cpu_info.cpp @@ -12,6 +12,40 @@ #include "../cpu_info.hpp" namespace license { +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); +} +} // namespace os +======= using namespace std; CpuInfo::CpuInfo() {} @@ -44,4 +78,5 @@ 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