13,825
社区成员
发帖
与我相关
我的任务
分享
DWORD GetCPUID(void)
{
DWORD uCPUID = 0U; //UINT
_asm
{
mov eax, 1
cpuid
mov uCPUID, edx
}
return uCPUID;
}
BYTE szCPU[16]= {0};
DWORD uCPUID = 0U; //UINT
_asm
{
mov eax, 0
cpuid
mov dword ptr szCPU[0], ebx
mov dword ptr szCPU[4], edx
mov dword ptr szCPU[8], ecx
mov eax, 1
cpuid
mov uCPUID, edx
jmp show;
}
show: MessageBox(NULL,szCPU,"show",MB_OK);
// project2.dll ,use vcl
extern "C"{
__declspec(dllexport) __stdcall DWORD GetCPUID(void);
}
DWORD __stdcall GetCPUID(void)
{
DWORD uCPUID = 0U; //UINT
_asm
{
mov eax, 1
cpuid
mov uCPUID, edx
}
return uCPUID;
}
// 调用
void __fastcall TForm1::btn1Click(TObject *Sender)
{
HINSTANCE hInc = LoadLibraryA("Project2.dll");
DWORD (__stdcall *getcpuid)(void);
(FARPROC)getcpuid = GetProcAddress(hInc,"GetCPUID");
if (getcpuid)
{
AnsiString sCpuID = AnsiString().sprintf("%u", getcpuid());
ShowMessage(sCpuID); // 也是3219913727
}
FreeLibrary(hInc);
}