è·åCPUåºåå·è¦ä½¿ç¨ æ±ç¼æ令
æ¯è¾éº»ç¦
static DWORD g_eax; // åå¨è¿åçeax
static DWORD g_ebx; // åå¨è¿åçebx
static DWORD g_ecx; // åå¨è¿åçecx
static DWORD g_edx; // åå¨è¿åçedx
void Executecpuid(DWORD veax)
{
asm("cpuid"
:"=a"(g_eax),
"=b"(g_ebx),
"=c"(g_ecx),
"=d"(g_edx)
:"a"(g_eax));
}
int isSupport;
void GetSerialNumber(WORD nibble[6])
{
Executecpuid(1); // æ§è¡cpuidï¼åæ°ä¸º eax = 1
isSupport = g_edx & (1<<18); // edxæ¯å¦ä¸º1代表CPUæ¯å¦åå¨åºåå·
if (FALSE == isSupport) // ä¸æ¯æï¼è¿åfalse
{
return ;
}
Executecpuid(3); // æ§è¡cpuidï¼åæ°ä¸º eax = 3
memcpy(&nibble[4], &g_eax, 4); // eax为æé«ä½ç两个WORD
memcpy(&nibble[0], &g_ecx, 8); // ecx å edx为ä½ä½ç4个WORD
}
温馨提示:内容为网友见解,仅供参考