type TBus = (ISA, SMBus, VIA686ABus, DirectIO); TSMB = (SMBIntel, SMBAMD, SMBALi); type TSharedData = Record STemperature : array [1..10] of Integer; SVoltage : array [1..10] of Real; SFan : array [1..10] of Integer; SMHZ : Integer; SNrCPU : Byte; SCPUUsage : array [1..4] of Real; end; TSharedInfo = Record SMBM_Version : array [0..10] of Char; SSMB_Base : Word; SSMB_Type : TBus; SSMB_Code : TSMB; SSMB_Addr : Byte; SSMB_Name : array [0..40] of Char; SISA_Base : Word; SChipType : Integer; SVoltageSubType : Byte; end; TSharedHL = Record STempC : array [1..10] of LongInt; STempA : array [1..10] of Extended; STempL : array [1..10] of Real; STempH : array [1..10] of Real; SVoltC : array [1..10] of LongInt; SVoltA : array [1..10] of Extended; SVoltL : array [1..10] of Real; SVoltH : array [1..10] of Real; SFanC : array [1..10] of LongInt; SFanA : array [1..10] of Extended; SFanL : array [1..10] of Real; SFanH : array [1..10] of Real; SStart : array [0..40] of Char; SCurrent : array [0..40] of Char; SCPUC : array [1..4] of LongInt; SCPUA : array [1..4] of Extended; SCPUL : array [1..4] of Real; SCPUH : array [1..4] of Real; end; TSharedName = Record STempName : array [1..10] of array [0..10] of Char; SVoltName : array [1..10] of array [0..10] of Char; SFanName : array [1..10] of array [0..10] of Char; SCPUName : array [0..10] of Char; SCPUUSageName : array [0..10] of Char; end; PSharedData = ^TSharedData; PSharedInfo = ^TSharedInfo; PSharedHL = ^TSharedHL; PSharedName = ^TSharedName; var CPUMhz : Integer; CPUNr : Byte; Temperature : array [1..10] of Integer Voltage : array [1..10] of Real; Fan : array [1..10] of Integer; CPU : array [1..4] of Real; UsedBus : TBus; IsaBase : Word; SMB_BASE : Word; SMBusType : TSMB; SMB_NAME : String; SMBChipAddress : Byte; ChipType : Integer; TempL : array[1..10] of Real; TempH : array[1..10] of Real; TempA : array[1..10] of Extended; TempC : array[1..10] of LongInt; VoltL : array[1..10] of Real; VoltH : array[1..10] of Real; VoltA : array[1..10] of Extended; VoltC : array[1..10] of LongInt; FanL : array[1..10] of Real; FanH : array[1..10] of Real; FanA : array[1..10] of Extended; FanC : array[1..10] of LongInt; StartingTimeLog : String; CurrentTimeLog : String; CPUL : array[1..4] of Real; CPUH : array[1..4] of Real; CPUA : array[1..4] of Extended; CPUC : array[1..4] of LongInt; TempName : array[1..10] of String; VoltName : array[1..10] of String; FanName : array[1..10] of String; CPUName : String; CPUUsageName : String; function ReadSharedData : Boolean; function ReadSharedInfo : Boolean; function ReadSharedHL : Boolean; function ReadSharedName : Boolean; implementation function ReadSharedData : Boolean; var PSH : PSharedData; hSData : Integer; X : Integer; begin Result:=False; hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$D$'); if hSData=0 then Exit; PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0); if PSH=Nil then begin CloseHandle(hSData); Exit; end; with PSH^ do begin for X:=1 to 10 do Temperature[X]:=STemperature[X]; for X:=1 to 10 do Voltage[X]:=SVoltage[X]; for X:=1 to 10 do Fan[X]:=SFan[X]; CPUMHZ:=SMHZ; CPUNr:=SNrCPU; for X:=1 to 4 do CPU[X]:=SCPU[X]; end; UnMapViewOfFile(PSH); CloseHandle(hSData); Result:=True; end; function ReadSharedInfo : Boolean; var PSH : PSharedInfo; hSInfo : Integer; begin Result:=False; hSInfo:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$I$'); if hSInfo=0 then Exit; PSH:=MapViewOfFile(hSInfo, FILE_MAP_READ, 0, 0, 0); if PSH=Nil then begin CloseHandle(hSInfo); Exit; end; with PSH^ do begin SMB_Base:=SSMB_Base; UsedBus:=SSMB_Type; SmbusType:=SSMB_Code; SMBChipAddress:=SSMB_Addr; SMB_Name:=StrPas(SSMB_Name); ISABase:=SISA_Base; ChipType:=SChipType; VoltageSubType:=SVoltageSubType; end; UnMapViewOfFile(PSH); CloseHandle(hSInfo); Result:=True; end; function ReadSharedHL : Boolean; var PSH : PSharedHL; hSHL : Integer; X : Integer; begin Result:=False; hSHL:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$H$'); if hSHL =0 then Exit; PSH:=MapViewOfFile(hSHL, FILE_MAP_READ, 0, 0, 0); if PSH=Nil then begin CloseHandle(hSHL); Exit; end; with PSH^ do begin for X:=1 to 10 do begin TempL[X]:=STempL[X]; TempH[X]:=STempH[X]; TempA[X]:=STempA[X]; TempC[X]:=STempC[X]; end; for X:=1 to 10 do begin VoltL[X]:=SVoltL[X]; VoltH[X]:=SVoltH[X]; VoltA[X]:=SVoltA[X]; VoltC[X]:=SVoltC[X]; end; for X:=1 to 10 do begin FanL[X]:=SFanL[X]; FanH[X]:=SFanH[X]; FanA[X]:=SFanA[X]; FanC[X]:=SFanC[X]; end; StartingTimeLog:=StrPas(SStart); CurrentTimeLog:=StrPas(SCurrent); for X:=1 to 4 do begin CPUL[X]:=SCPUL[X]; CPUH[X]:=SCPUH[X]; CPUA[X]:=SCPUA[X]; CPUC[X]:=SCPUC[X]; end; end; UnMapViewOfFile(PSH); CloseHandle(hSHL); Result:=True; end; function ReadSharedName : Boolean; var PSH : PSharedName; hSData : Integer; X : Integer; begin Result:=False; hSData:=OpenFileMapping(FILE_MAP_READ, False, '$M$B$M$5$N$'); if hSData=0 then Exit; PSH:=MapViewOfFile(hSData, FILE_MAP_READ, 0, 0, 0); if PSH=Nil then begin CloseHandle(hSData); Exit; end; with PSH^ do begin for X:=1 to 10 do TempName[X]:=StrPas(STempName[X]) for X:=1 to 10 do VoltName[X]:=StrPas(VoltName[X]) for X:=1 to 10 do FanName[X]:=StrPas(FanName[X]) CPUName:=StrPas(SCPUName); CPUUsageName:=StrPas(SCPUName); end; UnMapViewOfFile(PSH); CloseHandle(hSData); Result:=True; end;
----------------------------------------------
博客 - http://offeu.com 脚本模型 - http://webpascal.com 需要短信接口的请联系我,可发行业与营销内容。