#include <windows.h>
#include <stdio.h>char * GetCpuCode()
{
char OEMString[13];
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax,2
CPUID
}
char szCPUID[122]={NULL};
char szTmp[33]={NULL};
unsigned long s1 = 0,s2=0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
//printf(szCPUID);
return szCPUID;
}void main()
{
char *str;
str=GetCpuCode();
printf(str);
}
上面的代码无法获取CPU ID 而下面的却行
void main()
{
char OEMString[13];
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax,2
CPUID
}
char szCPUID[122]={NULL};
char szTmp[33]={NULL};
unsigned long s1 = 0,s2=0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
printf(szCPUID);
}
我觉得哪儿好像类型转换有问题,有知道的朋友希望能指点一下
#include <stdio.h>char * GetCpuCode()
{
char OEMString[13];
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax,2
CPUID
}
char szCPUID[122]={NULL};
char szTmp[33]={NULL};
unsigned long s1 = 0,s2=0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
//printf(szCPUID);
return szCPUID;
}void main()
{
char *str;
str=GetCpuCode();
printf(str);
}
上面的代码无法获取CPU ID 而下面的却行
void main()
{
char OEMString[13];
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax,2
CPUID
}
char szCPUID[122]={NULL};
char szTmp[33]={NULL};
unsigned long s1 = 0,s2=0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
printf(szCPUID);
}
我觉得哪儿好像类型转换有问题,有知道的朋友希望能指点一下
{
//char OEMString[13];
//int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax,2
CPUID
}
char szCPUID[129]={NULL};
char szTmp[33]={NULL};
unsigned long s1 = 0,s2=0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
strcpy(CpuSerialNum, szCPUID);
return 0;
}