H
homliu
Unregistered / Unconfirmed
GUEST, unregistred user!
我曾用delphi实现了获取cpuid号。
但现在需要用vc来实现。请各位大侠帮忙。由于不熟悉vc,希望能给出比较完整代码。
感激不尽!
delphi代码:
type
TCPUID = array[1..4] of Longint;
function GetCPUID : TCPUID;
assembler;
register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
// MOV EAX,EBX
// STOSD {CPUID[2]}
// MOV EAX,ECX
// STOSD {CPUID[3]}
// MOV EAX,EDX
// STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;
function GetCpuId:String;
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID := -1;
CPUID := GetCPUID;
result:=IntToHex(CPUID[1],4);//取cpuid[1]的后4位。
//IntToHex(CPUID[2],n);cpuid[2]的后n位。
//IntToHex(CPUID[2],n);cpuid[3]的后n位。
//IntToHex(CPUID[2],n);cpuid[4]的后n位。
end;
但现在需要用vc来实现。请各位大侠帮忙。由于不熟悉vc,希望能给出比较完整代码。
感激不尽!
delphi代码:
type
TCPUID = array[1..4] of Longint;
function GetCPUID : TCPUID;
assembler;
register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
// MOV EAX,EBX
// STOSD {CPUID[2]}
// MOV EAX,ECX
// STOSD {CPUID[3]}
// MOV EAX,EDX
// STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;
function GetCpuId:String;
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID := -1;
CPUID := GetCPUID;
result:=IntToHex(CPUID[1],4);//取cpuid[1]的后4位。
//IntToHex(CPUID[2],n);cpuid[2]的后n位。
//IntToHex(CPUID[2],n);cpuid[3]的后n位。
//IntToHex(CPUID[2],n);cpuid[4]的后n位。
end;