// cpu_information.cpp : 定义控制台应用程序的入口点。
//
/*
获取cpu的信息相关的代码
*/
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "string"
using namespace std;
//用来存储信息
//DWORD 代表 unsigned long
DWORD deax;
DWORD debx;
DWORD decx;
DWORD dedx;
void ExeCPUID(DWORD veax)//初始化cpu
{
__asm
{
mov eax, veax
cpuid
mov deax, eax
mov debx, ebx
mov decx,ecx
mov dedx ,edx
}
}
long GetCPUFreq()//获取cpu的频率
{
int start1, start2;
__asm rdtsc
__asm mov start1,eax
Sleep(50);
__asm rdtsc
__asm mov start2,eax
return(start2 - start1) / 50000;
}
string GetManID()//获取制造商信息
{
//存储制造商信息
char ID[25];
//先清空数组ID
memset(ID,0,sizeof(ID));
//初始化
ExeCPUID(0);
//memccpy(ID +0,&debx,4);
memcpy(ID + 0, &debx, 4);
memcpy(ID+4,&dedx,4);
memcpy(ID+8,&decx,4);
return string(ID);
}
string GetCPUType()//获取cpu的型号
{
const DWORD id = 0x80000002;//从 0x80000002开始到0x800000024结束
char CPUType[49];//用来存储cpu型号信息
memset(CPUType, 0, sizeof(CPUType));//初始化型号
for (DWORD t = 0; t < 3;t++)
{
ExeCPUID(id + t);
// 每次循环结束 保存信息到数组
memcpy(CPUType + 16 * t + 0, &deax, 4);
memcpy(CPUType + 16 * t + 4, &debx, 4);
memcpy(CPUType + 16 * t + 8, &decx, 4);
memcpy(CPUType + 16 * t + 12, &dedx, 4);
}
return string(CPUType);
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "CPU的信息如下:" << endl;
cout << "cpu主频:" << GetCPUFreq() << endl;
cout << "cpu制造商:" << GetManID() << endl;
cout << "cpu型号:" << GetCPUType() << endl;
cin.get();
return 0;
}
//
/*
获取cpu的信息相关的代码
*/
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "string"
using namespace std;
//用来存储信息
//DWORD 代表 unsigned long
DWORD deax;
DWORD debx;
DWORD decx;
DWORD dedx;
void ExeCPUID(DWORD veax)//初始化cpu
{
__asm
{
mov eax, veax
cpuid
mov deax, eax
mov debx, ebx
mov decx,ecx
mov dedx ,edx
}
}
long GetCPUFreq()//获取cpu的频率
{
int start1, start2;
__asm rdtsc
__asm mov start1,eax
Sleep(50);
__asm rdtsc
__asm mov start2,eax
return(start2 - start1) / 50000;
}
string GetManID()//获取制造商信息
{
//存储制造商信息
char ID[25];
//先清空数组ID
memset(ID,0,sizeof(ID));
//初始化
ExeCPUID(0);
//memccpy(ID +0,&debx,4);
memcpy(ID + 0, &debx, 4);
memcpy(ID+4,&dedx,4);
memcpy(ID+8,&decx,4);
return string(ID);
}
string GetCPUType()//获取cpu的型号
{
const DWORD id = 0x80000002;//从 0x80000002开始到0x800000024结束
char CPUType[49];//用来存储cpu型号信息
memset(CPUType, 0, sizeof(CPUType));//初始化型号
for (DWORD t = 0; t < 3;t++)
{
ExeCPUID(id + t);
// 每次循环结束 保存信息到数组
memcpy(CPUType + 16 * t + 0, &deax, 4);
memcpy(CPUType + 16 * t + 4, &debx, 4);
memcpy(CPUType + 16 * t + 8, &decx, 4);
memcpy(CPUType + 16 * t + 12, &dedx, 4);
}
return string(CPUType);
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "CPU的信息如下:" << endl;
cout << "cpu主频:" << GetCPUFreq() << endl;
cout << "cpu制造商:" << GetManID() << endl;
cout << "cpu型号:" << GetCPUType() << endl;
cin.get();
return 0;
}