get CPU id (很全的)

2008-04-09 04:28:05来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

//This unit can be used to detect the cpu model.
unit CpuId;
interface
uses Windows, Mmsystem, Sysutils, Math, Dialogs;
type
TCpuRec=record
Name:string[128];
Vendor:string[12];
Frequency:word;
Family:integer;
Model:integer;
Stepping:integer;
L1DCache:word;
L1ICache:word;
L2Cache:word;
end;
TCpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium);
TCpuData=object
function GetCPUIDSupport:Boolean;
function GetVendorString:string;
function GetCPUFrequency:word;
procedure GetFMS(var Family,Model,Stepping:byte);
function GetMaxCpuId:dword;
function CheckFPU:Boolean;
function CheckTSC:Boolean;
function CheckMSR:Boolean;
function CheckMPS:Boolean;
function GetNoCpus:cardinal;
function CheckPN:Boolean;
function CheckCMPXCHG8B:Boolean;
function CheckCMOVe:Boolean;
function CheckSelfSnoop:Boolean;
function CheckDebugTraceStore:Boolean;
function CheckFXSAVEFXRSTOR:Boolean;
function CheckMMX:Boolean;
function CheckMMXplus:Boolean;
function CheckSSE:Boolean;
function CheckSSE2:Boolean;
function CheckAMD3DNow:Boolean;
function CheckAMD3DNowPlus:Boolean;
function GetMaxExtendedFunctions:dword;
procedure GetExtendedFMS(var Family,Model,Stepping:byte);
function GetExtendedCpuName:string;
function GetExtendedL1DCache:word;
function GetExtendedL1ICache:word;
function GetExtendedL2Cache:word;

function CheckCeleron:Boolean;
function CheckPentiumIII:Boolean;
function CheckXeon:Boolean;
function CheckPentium4:Boolean;
function CheckIthanium:Boolean;
function IntelP5N:string;
function IntelP6N:string;
function AMDK5N:string;
function Cyrix686N:string;
function GenericCpuN:string;
function P5CacheL1DI:word;
function P6CacheL1DI:word;
function P6CacheL2:word;

function AuthenticAMD:TCpuRec;

function GenuineIntel:TCpuRec;
function CyrixInstead:TCpuRec;
function GenericCPU:TCpuRec;
end;
const
Intel486:array[0..8] of string=
(''''Intel 486 DX'''',
''''Intel 486 DX'''',
''''Intel 486 SX'''',
''''Intel 486 DX2'''',
''''Intel 486 SL'''',
''''Intel 486 SX2'''',
''''Intel 486 DX2'''',
''''Intel 486 DX4'''',
''''Intel 486 DX4'''');
UMC486:array[0..1] of string=
(''''UMC U5D'''',
''''UMC U5S'''');
AMD486:array[0..5] of string=
(''''AMD 486 DX2'''',
''''AMD 486 DX2'''',
''''AMD 486 DX4'''',
''''AMD 486 DX4'''',
''''AMD 5x86'''',
''''AMD 5x86'''');
IntelP5:array[0..6] of string=
(''''Intel Pentium P5 A-Step'''',
''''Intel Pentium P5'''',
''''Intel Pentium P54C'''',
''''Intel Pentium P24T Overdrive'''',
''''Intel Pentium MMX P55C'''',
''''Intel Pentium P54C'''',
''''Intel Pentium MMX P55C'''');
NexGenNx586=''''NexGen Nx586'''';
Cyrix4x86=''''VIA Cyrix 4x86'''';
Cyrix5x86=''''VIA Cyrix 5x86'''';
CyrixMediaGX=''''VIA Cyrix Media GX'''';
CyrixM1=''''VIA Cyrix 6x86'''';
CyrixM2=''''VIA Cyrix 6x86MX'''';
CyrixIII=''''VIA Cyrix III'''';
AMDK5:array[0..3] of string=
(''''AMD SSA5 (PR75/PR90/PR100)'''',
''''AMD 5k86 (PR120/PR133)'''',
''''AMD 5k86 (PR166)'''',
''''AMD 5k86 (PR200)'''');
AMDK6:array[0..4] of string=
(''''AMD K6 (166~233)'''',
''''AMD K6 (266~300)'''',
''''AMD K6-2'''',
''''AMD K6-III'''',
''''AMD K6-2 or K6-III '''');
Centaur:array[0..2] of string=
(''''Centaur C6'''',
''''Centaur C2'''',
''''Centaur C3'''');
Rise:array[0..1] of string=
(''''Rise mP6'''',
''''Rise mP6'''');
IntelP6:array[0..7] of string=
(''''Intel Pentium Pro A-Step'''',
''''Intel Pentium Pro'''',
''''Intel Pentium II'''',
''''Intel Pentium II'''',
''''Intel Pentium II'''',
''''Intel Pentium III'''',
''''Intel Pentium III'''',
''''Intel Pentium III'''');
AMDK7:array[0..3] of string=
(''''AMD Athlon(tm) Processor'''',
''''AMD Athlon(tm) Processor'''',
''''AMD Duron(tm) Processor'''',
''''AMD Thunderbird Processor'''');
IntelP4=''''Intel Pentium 4'''';
var CpuData:TCpuData;
implementation
function TCpuData.GetCPUIDSupport:Boolean;
var TempDetect:dword;
begin
asm
pushf

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Delphi中的算术运算函数

下一篇:Data-Browse型Data-Aware控件的制作