Lendo informações da BIOS

Neste artigo, explicarei como ler as informações da BIOS.

Existe um projeto, na minha opinião um dos poucos que realmente funciona.

https://github.com/RRUZ/tsmbios/blob/master/Common/uSMBIOS.pas

Este projeto, implementa uma camada, que permite ler as informações da BIOS do computador.

Com ela é possível acessar informações, como memória, temperatura, e tantas outras informações.

Um exemplo de uso, esta no projeto relógio, a função GetMemorySize lê a quantidade de memória disponível no seu PC.

function GetMemorySize : DWORD;
Var
SMBios : TSMBios;
LPhysicalMemArr : TPhysicalMemoryArrayInformation;
begin
SMBios:=TSMBios.Create;
try
if SMBios.HasPhysicalMemoryArrayInfo then
for LPhysicalMemArr in SMBios.PhysicalMemoryArrayInfo do
begin
if LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.MaximumCapacity<>$80000000 then
begin
result := LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.MaximumCapacity div 1024;
break;
end
else
begin
result :=LPhysicalMemArr.RAWPhysicalMemoryArrayInformation^.ExtendedMaximumCapacity div 1024;
break;
end;
end
else
result := 0;
finally
SMBios.Free;
end;
end;

Existem diversos exemplos de código nesta maravilhosa biblioteca, e vale a pena rever e estudar este código.