如何用程序取得CPU的ID号,是否各种CPU的号不重复?

解决方案 »

  1.   

    unsigned long s1,s2;
      unsigned char vendor_id[]="------------";
    __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
          }
          printf("%s-",vendor_id);
          __asm{
            mov eax,01h
            xor edx,edx
            cpuid
            mov s1,edx
            mov s2,eax
          }
          printf("%08X\n%08X-",s1,s2);
          __asm{
            mov eax,03h
            xor ecx,ecx
            xor edx,edx
            cpuid
            mov s1,edx
            mov s2,ecx
          }
          printf("%08X-%08X\n",s1,s2);
      

  2.   

    #include <stdio.h>
    #include <conio.h>int main(int argc,char **argv)
    {
    unsigned long s1,s2;
    unsigned char vendor_id[]="------------";
    char sel;
    printf("Select the function:\n1-------Read CPU id.\n2-------Disable CPU id.\n");
    sel=getch();
    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
    }
    printf("%s-",vendor_id);
    __asm{
    mov eax,01h
    xor edx,edx
    cpuid
    mov s1,edx
    mov s2,eax
    }
    printf("%08X\n%08X-",s1,s2);
    __asm{

    mov eax,03h
    xor ecx,ecx
    xor edx,edx
    cpuid
    mov s1,edx
    mov s2,ecx
    }
    printf("%08X-%08X\n",s1,s2);
    break;
    case '2':
    {
    __asm{

    mov ecx,119h
    rdmsr
    or eax,00200000h
    wrmsr
    }
    }
    printf("CPU id is disabled.\n");
    break;
    }
    return 0;
    }
      

  3.   

    是我的程序耶。
    http://vip.6to23.com/NowCan1/tech/cpuid.htm
      

  4.   

    这个没有获得真正的CPU的系列号,而是功能号,
    而系列的号不同的CPU应是不一样的