2,640
社区成员
发帖
与我相关
我的任务
分享
// ***获取CPUID号***************************
int nTime [ 2 ];
int nCPUClock;
_asm
{
rdtsc
mov nTime[ 0 ], edx
mov nTime[ 1 ], eax
}
Sleep(1000);
_asm
{
rdtsc
sub eax, nTime[ 1 ]
sub edx, nTime[ 0 ]
mov nCPUClock, eax
}
CString str;
str.Format( "%dMHz", nCPUClock / 1000000 );
//AfxMessageBox(str);
CString CPUID;
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char sel;
sel='1';
CString VernderID;
CString MyCpuID,CPUID1,CPUID2;
switch(sel)
{
case '1':
__asm{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
VernderID.Format("%s-",vendor_id);
__asm{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
CPUID1.Format("%08X%08X",s1,s2);
__asm{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
CPUID2.Format("%08X%08X",s1,s2);
break;
case '2':
{
__asm{
mov ecx,119h
rdmsr
or eax,00200000h
wrmsr
}
}
AfxMessageBox("CPU id is disabled.");
break;
}
MyCpuID = CPUID1+CPUID2;
CPUID = MyCpuID;
return CPUID;
//************************************************