CSDN论坛 > VC/MFC > 硬件/系统

怎样可以得到cpu的ID? [问题点数:60分,结帖人camelry]

Bbs1
本版专家分:0
结帖率 100%
CSDN今日推荐
Bbs1
本版专家分:21
Bbs1
本版专家分:0
Bbs10
本版专家分:155459
Blank
榜眼 2002年 总版技术专家分年内排行榜第二
Blank
进士 2001年 总版技术专家分年内排行榜第七
Blank
金牌 2002年1月 总版技术专家分月排行榜第一
Blank
银牌 2002年4月 总版技术专家分月排行榜第二
Bbs7
本版专家分:22716
匿名用户不能发表回复!
其他相关推荐
java dll 得到cpu id
vc 编写dll java 调用 通过dll得到cup id
VC++ 获取CPU信息的方法
#include "StdAfx.h" #include "cpuassembly.h" // bit flags set by cpuid when called with register eax set to 1 #define MMX_SUPPORTED 0x00800000 #define SSE_SUPPORTED 0x02000000 #define SSE2_SUPPORTED 0x04000000 #define AMD_3DNOW_SUPPORTED 0x80000000 // AMD specific #define AMD_3DNOW_EX_SUPPORTED 0x40000000 #define AMD_MMX_EX_SUPPORTED 0x00400000 #define SUPPORT_MMX 0x0001 #define SUPPORT_3DNOW 0x0002 #define SUPPORT_SSE 0x0004 #define SUPPORT_SSE2 0x0008 CPUAssembly::CPUAssembly(void) { memset(&sCPUInfo, 0, sizeof(sCPUInfo)); } CPUAssembly::~CPUAssembly(void) { } bool CPUAssembly::IsCPUID() const { __try { _asm { xor eax, eax cpuid } } __except (EXCEPTION_EXECUTE_HANDLER) { return false; } return true; } bool CPUAssembly::QueryCPUInfo() { if (!IsCPUID()) return false; memset(&sCPUInfo, 0, sizeof(sCPUInfo)); DWORD dwStandard = 0; DWORD dwFeature = 0; DWORD dwMax = 0; DWORD dwExt = 0; int feature = 0; int os_support = 0; union { char cBuffer[12+1]; struct { DWORD dw0; DWORD dw1; DWORD dw2; } stc; } Vendor; memset(&Vendor, 0, sizeof(Vendor)); _asm { push ebx push ecx push edx // get the vendor string xor eax, eax cpuid mov dwMax, eax mov Vendor.stc.dw0, ebx mov Vendor.stc.dw1, edx mov Vendor.stc.dw2, ecx // get the Standard bits mov eax, 1 cpuid mov dwStandard, eax mov dwFeature, edx // get AMD-specials mov eax, 80000000h cpuid cmp eax, 80000000h jc notamd mov eax, 80000001h cpuid mov dwExt, edx notamd: pop ecx pop ebx pop edx } if (dwFeature & MMX_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_MMX; if (dwExt & AMD_3DNOW_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_3DNOW; if (dwFeature & SSE_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_SSE; if (dwFeature & SSE2_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_SSE2; sCPUInfo.iFamily = (short int)((dwStandard >> 8) & 0xF); // retrieve family if (sCPUInfo.iFamily == 15) // retrieve extended family sCPUInfo.iFamilyEx = (dwStandard >> 16) & 0xFF0; sCPUInfo.iModel = (short int)((dwStandard >> 4) & 0xF); // retrieve model if (sCPUInfo.iModel == 15) // retrieve extended model sCPUInfo.iModelEx = (dwStandard >> 12) & 0xF; sCPUInfo.iStepping = (short int)((dwStandard) & 0xF); // retrieve stepping strcpy(sCPUInfo.sVendorName, Vendor.cBuffer); sCPUInfo.iSpeed = ICPUInfo::GetSpeed(); strcpy(sCPUInfo.sProcessorName, ICPUInfo::GetCPUName(sCPUInfo.sVendorName, sCPUInfo.iFamily, sCPUInfo.iModel, sCPUInfo.iFamilyEx, sCPUInfo.iModelEx).c_str()); return true; } unsigned int CPUAssembly::GetSpeedMHz() const { return (unsigned int)(sCPUInfo.iSpeed/(1024*1024)); } std::string CPUAssembly::GetCPUName() const { return sCPUInfo.sProcessorName; } std::string CPUAssembly::GetVendorName() const { return sCPUInfo.sVendorName; } short int CPUAssembly::GetCPUFamily() const { return sCPUInfo.iFamily; } short int CPUAssembly::GetCPUModel() const { return sCPUInfo.iModel; } short int CPUAssembly::GetCPUStepping() const { return sCPUInfo.iStepping; } bool CPUAssembly::IsMMXSupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_MMX) == SUPPORT_MMX); } bool CPUAssembly::IsSSESupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_SSE) == SUPPORT_SSE); } bool CPUAssembly::IsSSE2Supported() const { return ((sCPUInfo.dwFeatures & SUPPORT_SSE2) == SUPPORT_SSE2); } bool CPUAssembly::Is3DNowSupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_3DNOW) == SUPPORT_3DNOW); }
MFC - 获取CPU唯一标识符
CString GetCPUid() { // TODO: 在此添加控件通知处理程序代码 unsigned long s1,s2,s3,s4; __asm { mov eax,00h xor edx,edx cpuid mov s1, edx mov s2, eax } __asm { mov eax,01h xor ec
2.Sigar获取CPU信息
CPU的基本信息有:vendor、model、mhz、cacheSize; CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。 Java代码:
更改cpuID(CPU序列号)指南
最近在使用一个软件,购买了许可。该license绑定了机器的cpuID,然该软件并不能正在运行在windows 8 64bit操作系统上,具体表现为运行3-5mins后就崩溃。于是,我计划使用VMware虚拟机虚拟出相应的硬件以及windows xp 32bit操作系统,将该软件运行到虚拟机上。我原以为VMware虚拟机的CPU配置是基于host的机器配置。但是我发现事实并不是如此。在cmd sh
linux工具之awk利用:获取cpu占用率达到一定值的进程的PID
之前我对awk的使用仅限于从格式确定的字符串输出中取出自己相要的字段。但是最近有一个需求,需要从标准输出中截取一个字段,但是这个标准输出看上去好像格式并不统一: 这个命令就是top -bn 1 -i -c 输出如下: top - 12:23:08 up 16 days, 20:30, 6 users, load average: 1.20, 1.17, 0.80 Tasks: 287...
一览画面点击复选框获后如何获取多个id值
在web开发中经常会遇到一览画面中每一条记录前都带一个复选框,点击后选中该条记录进行删除、修改、查看等操作。修改和查看都是获取一条记录的id值后传递到后台进行查询获取该记录对象的各种属性值,再显示到画面上。我说的重点是选中多条记录后进行批量删除,如何获取多条记录的id值是问题的关键。首先是在jsp页面中全选中复选框的方法。代码如下: function checkEvent(name, allCh
从资源中获取位图的两种方法
方法(1):先获取Resource,然后可以通过资源ID获取Drawable,也可以通过资源ID获取资源文件的数据流Drawable是个抽象类,在BitmapDrawable中我们就看到位图的具体操作,在仔细看下BitmapDrawable的构造函数,我们就会发现与Resource中的openRawResource()接口是相对应的,就可以通过以下方法来获取位图:   Resources r =
Linux下获取CPUID、硬盘序列…
原文地址:Linux下获取CPUID、硬盘序列号与MAC地址作者:woonjoon摘载: 获取CPUID 按照网上提供的说明,CPUID并不是所有的Intel CPU都支持的。如果支持,汇编调用为:eax置0000_0003,调用cpuid。 以下为实现代码(在我的CPU上,并没有得到): #define cpuid(in,a,b,c,d) asm("cpuid": "=a" (a), "=b
QT5 获取mac地址和cpu序列号
#include #include #include #include #include #ifdef __GNUC__ #include #elif defined(_MSC_VER) #if _MSC_VER >= 1400 #include #endif #else #error Only supports MSVC or GCC #endif QS
关闭