//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',
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',
本文关键:delphi cpu id