我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++中怎么获取CPU信息

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++中怎么获取CPU信息

C++中怎么获取CPU信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

C++获取CPU信息之获得CPU的制造商信息(Vender ID String)

把eax = 0作为输入参数,可以得到CPU的制造商信息。cpuid指令执行以后,会返回一个12字符的制造商信息,前四个字符的ASC码按低位到高位放在ebx,中间四个放在edx,***四个字符放在ecx。比如说,对于intel的cpu,会返回一个“GenuineIntel”的字符串,返回值的存储格式为:

31 23 15 07 00  EBX| u (75)| n (6E)| e (65)| G (47)  EDX| I (49)| e (65)| n (6E)| i (69)  ECX| l (6C)| e (65)| t (74)| n (6E)

因此可以这样实现他:

string CPUID::GetVID()  {  char cVID[13]; // 字符串,用来存储制造商信息  memset(cVID, 0, 13); // 把数组清0  Executecpuid(0); // 执行cpuid指令,使用输入参数 eax = 0 memcpy(cVID, &m_ebx, 4); // 复制前四个字符到数组  memcpy(cVID+4, &m_edx, 4); // 复制中间四个字符到数组  memcpy(cVID+8, &m_ecx, 4); // 复制***四个字符到数组  return string(cVID); // 以string的形式返回  }

C++获取CPU信息之获得CPU商标信息(Brand String)

在我的电脑上点击右键,选择属性,可以在窗口的下面看到一条CPU的信息,这就是CPU的商标字符串。CPU的商标字符串也是通过cpuid得到的。由于商标的字符串很长(48个字符),所以不能在一次cpuid指令执行时全部得到,所以intel把它分成了3个操作,eax的输入参数分别是0x80000002,0x80000003,0x80000004,每次返回的16个字符,按照从低位到高位的顺序依次放在eax, ebx, ecx, edx。因此,可以用循环的方式,每次执行完以后保存结果,然后执行下一次cpuid。

  1. string CPUID::GetBrand()  

  2. {  

  3. const DWORD BRANDID = 0x80000002; 
    // 从0x80000002开始,到0x80000004结束  

  4. char cBrand[49]; // 用来存储商标字符串,48个字符  

  5. memset(cBrand, 0, 49); // 初始化为0  

  6. for (DWORD i = 0; i < 3; i++) // 依次执行3个指令  

  7. {  

  8. Executecpuid(BRANDID + i);   

  9. memcpy(cBrand + i*16, &m_eax, 16); 
    // 每次执行结束后,保存四个寄存器里的asc码到数组  

  10. } // 由于在内存中,m_eax, m_ebx, m_ecx, m_edx是连续排列  

  11. // 所以可以直接以内存copy的方式进行保存  

  12. return string(cBrand); // 以string的形式返回  

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++中怎么获取CPU信息

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++中怎么获取CPU信息

C++中怎么获取CPU信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++获取CPU信息之获得CPU的制造商信息(Vender ID String)把eax
2023-06-17

C#中怎么获取逻辑硬盘信息

C#中怎么获取逻辑硬盘信息,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#获取逻辑硬盘信息——概述若仅简单获取逻辑驱动器的名称列表我们使用.Net框架的Environme
2023-06-17

VB.NET中怎么获取硬盘信息

VB.NET中怎么获取硬盘信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET获取硬盘信息1、用API函数GetDiskFreeSpaceEx获取磁盘空间Privat
2023-06-17

python中怎么获取对象信息

本篇文章给大家分享的是有关python中怎么获取对象信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、获取对象类型,基本类型可以用type()来判断。>>> type(12
2023-06-20

在C++ 代码中怎么获取函数调用栈信息

这篇文章主要介绍“在C++ 代码中怎么获取函数调用栈信息”,在日常操作中,相信很多人在在C++ 代码中怎么获取函数调用栈信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在C++ 代码中怎么获取函数调用栈信息
2023-06-15

如何在Linux中获取CPU信息的简单CLI工具

这篇文章主要讲解了“如何在Linux中获取CPU信息的简单CLI工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Linux中获取CPU信息的简单CLI工具”吧!CPUFetch是一个
2023-06-15

PHP中怎么获取服务器信息

要获取服务器信息,可以使用以下几种方法:使用$_SERVER全局变量来获取服务器信息,例如:echo $_SERVER['SERVER_NAME']; // 获取服务器名称echo $_SERVER['SER
PHP中怎么获取服务器信息
2024-04-29

Linux中怎么获取CPU速度

这篇文章主要介绍Linux中怎么获取CPU速度,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方法1:使用hardinfoHardinfo是一个图形用户界面(GUI)工具,可生成有关各种硬件组件的报告。它是用Gtk编写
2023-06-28

C#中如何获取逻辑硬盘信息

这篇文章给大家介绍C#中如何获取逻辑硬盘信息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、概述若仅简单实现C#获取逻辑驱动器的名称列表我们使用.NET框架的Environment.GetLogicalDrives即
2023-06-17

CentOS中怎么查看CPU信息

本篇文章给大家分享的是有关CentOS中怎么查看CPU信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们可以用/proc/cpuinfo 查看CPU 的信息。 该文件包含系
2023-06-10

ansible怎么获取主机信息

要获取主机的信息,可以使用Ansible的setup模块。setup模块可以收集主机的各种信息,并将其保存为Ansible的facts(事实)。以下是一个使用setup模块的例子:创建一个名为"host_info.yml"的Ansible
2023-10-24

PHP中怎么获取数据库表信息

PHP中怎么获取数据库表信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP获取数据库表信息函数之mysql_list_dbs()resource mysq
2023-06-17

ADO.NET 中怎么从DataReader中获取架构信息

ADO.NET 中怎么从DataReader中获取架构信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从DataReader中获取架构信息当ADO.NET D
2023-06-17

python获取linux中top信息

import os,time,sysimport paramiko,pexpect获取日期格式:def get_year_mon_day_hour_min_sec(): time_array = time.localtime()
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录