

The TSMBIOS can be compiled using a WinApi mode (uses the GetSystemFirmwareTable function) or using the WMI Mode (uses the MSSMBios_RawSMBiosTables class) Note : you can find more information about the SMBIOS Support in Windows on this link. The SMBIOS Entry Point is located somewhere between the addresses 0xF0000 and 0xFFFFF, in early Windows systems (Win95, Win98) it was possible access this space address directly, but after with the introduction of the NT Systems and the new security changes the BIOS was accessible through section \Device\PhysicalMemory, but this last method was disabled as well in Windows Server 2003 Service Pack 1, and replaced with 2 new WinApi functions the EnumSystemFirmwareTables and GetSystemFirmwareTable, Additionally the WMI supports reading the entire contents of SMBIOS data i using the MSSMBios_RawSMBiosTables class inside of the root\wmi namespace. Therefore, dynamically changing data is rarely represented in SMBIOS tables. The BIOS typically populates the SMBIOS structures at system boot time, and is not in control when the OS is running. Useful for create a Hardware ID (machine fingerprint).You can avoid the use of undocumented functions to get hardware info (for example the RAM type and manufacturer).


SMBIOS stands for System Management BIOS, this standard is tightly related and developed by the DMTF (Desktop Management Task Force).

A few weeks ago I started a new project called TSMBIOS, this is a library which allows access the SMBIOS using the Object Pascal language (Delphi or Free Pascal).
