CPU ID using C ++ windows

I want to get the CPU ID of my computer (windows) using C ++.

I used this code to get it.

It displays information like this:

For InfoType 0
CPUInfo[0] = 0x5
CPUInfo[1] = 0x756e6547
CPUInfo[2] = 0x6c65746e
CPUInfo[3] = 0x49656e69

For InfoType 1
CPUInfo[0] = 0xf31
CPUInfo[1] = 0x20800
CPUInfo[2] = 0x41d
CPUInfo[3] = 0xbfebfbff

For InfoType 2
CPUInfo[0] = 0x605b5001
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x7c7040

For InfoType 3
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 4
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 5
CPUInfo[0] = 0x40
CPUInfo[1] = 0x40
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000000
CPUInfo[0] = 0x80000008
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000001
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000002
CPUInfo[0] = 0x20202020
CPUInfo[1] = 0x20202020
CPUInfo[2] = 0x20202020
CPUInfo[3] = 0x20202020

For InfoType 80000003
CPUInfo[0] = 0x47202020
CPUInfo[1] = 0x69756e65
CPUInfo[2] = 0x4920656e
CPUInfo[3] = 0x6c65746e

For InfoType 80000004
CPUInfo[0] = 0x20295228
CPUInfo[1] = 0x20555043
CPUInfo[2] = 0x30382e32
CPUInfo[3] = 0x7a4847

For InfoType 80000005
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000006
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x4008040
CPUInfo[3] = 0x0

For InfoType 80000007
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000008
CPUInfo[0] = 0x2028
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

I could not understand among the information, which is the unique identifier of the CPU of my computer.

Can anyone help me with this.

+3
source share
3 answers

You mean "serial number", "who made the processor" or "a string that identifies the make and model of the processor."

Serial number:

If you do not have a Pentium III, you do not have a “unique identifier” associated with your processor.

Intel ( ) P3. - .

, , :

mov eax, 3
cpuid

eax, edx ecx

__cpuid, "3" . , P3.

( )

int regs[4] = {0};
char vendor[13];
__cpuid(regs, 0);              // mov eax,0; cpuid
memcpy(vendor, &regs[1], 4);   // copy EBX
memcpy(vendor+4, &regs[3], 4); // copy EDX
memcpy(vendor+8, &regs[2], 4); // copy ECX
vendor[12] = '\0';
print("My CPU is a %s\n", vendor);

"GenuineIntel".

(BRAND String)

CPUID, , , , " ", "Intel (R) Core (TM) i7-3770 CPU"). @3.4GHZ.... " Intel . , CPUID. , .

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-2a-manual.pdf

__cpuid(), MSVC, "InfoType" EAX cpuid. EAX, EBX, ECX EDX CPUInfo [4], .

+4

, , . Intel - "GenuineIntel" :

CPUInfo[1] = 0x756e6547 = 'Genu'
CPUInfo[3] = 0x49656e69 = 'ineI'
CPUInfo[2] = 0x6c65746e = 'ntel'

AMD - "AuthenticAMD".

. http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID - , , CPUID .

+2

Check here . You need to use __cpuid. Then you should extract the information based on the table.

+1
source

All Articles