thtswl / SystemFirmware

Managed wrapper Win32 API functions: GetSystemFirmwareTable and EnumSystemFirmwareTables

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SystemFirmware

Managed wrapper Win32 API functions: GetSystemFirmwareTable and EnumSystemFirmwareTables Supported SMBIOS Types:

  • BIOS Information (Type 0)
  • System Information (Type 1)
  • Baseboard (or Module) Information (Type 2)
  • System Enclosure or Chassis (Type 3)
  • Processor Information (Type 4)
  • Memory Controller Information (Type 5, Obsolete)
  • Memory Module Information (Type 6, Obsolete)
  • Cache Information (Type 7)
  • Port Connector Information (Type 8)
  • System Slots (Type 9)
  • On Board Devices Information (Type 10, Obsolete)
  • OEM Strings (Type 11)
  • System Configuration Options (Type 12)
  • BIOS Language Information (Type 13)
  • Group Associations (Type 14)
  • System Event Log (Type 15) [Not supported]
  • Physical Memory Array (Type 16) [Not supported]
  • Memory Device (Type 17)
  • 32-Bit Memory Error Information (Type 18) [Not supported]
  • Memory Array Mapped Address (Type 19) [Not supported]
  • Memory Device Mapped Address (Type 20) [Not supported]
  • Built-in Pointing Device (Type 21) [Not supported]
  • Portable Battery (Type 22) [Not supported]
  • System Reset (Type 23) [Not supported]
  • Hardware Security (Type 24) [Not supported]
  • System Power Controls (Type 25) [Not supported]
  • Voltage Probe (Type 26)
  • Cooling Device (Type 27)
  • Temperature Probe (Type 28)
  • Electrical Current Probe (Type 29)
  • Out-of-Band Remote Access (Type 30) [Not supported]
  • Boot Integrity Services (BIS) Entry Point (Type 31) [Not supported]
  • System Boot Information (Type 32) [Not supported]
  • 64-Bit Memory Error Information (Type 33) [Not supported]
  • Management Device (Type 34)
  • Management Device Component (Type 35)
  • Management Device Threshold Data (Type 36) [Not supported]
  • Memory Channel (Type 37) [Not supported]
  • IPMI Device Information (Type 38) [Not supported]
  • System Power Supply (Type 39)
  • Additional Information (Type 40)
  • Onboard Devices Extended Information (Type 41)
  • Management Controller Host Interface (Type 42) [Not supported]
  • TPM Device (Type 43) [Not supported]
  • Processor Additional Information (Type 44) [Not supported]

Example how to read SMBIOS Type 2 (Baseboard) and Type 8 (Port Connector) information:

using System;
using System.Linq;
using using AlphaOmega.Debug;
using AlphaOmega.Debug.Native;
using AlphaOmega.Debug.Smb;

class Program
{
	static void Main(String[] args)
	{
		FirmwareT fw = new FirmwareT();
		FirmwareSmBios smbios = fw.GetData().Single();

		//Motherboard vendor and name
		Baseboard baseboard = smbios.GetType();
		Console.WriteLine("Motherboard Manufacturer: {0} Name: {1}",baseboard.Manufacturer,baseboard.Product);

		//Try to find USB 3.0 (Not tested. It's a sample)
		foreach(TypeBase type in smbios.Types)
 			switch(type.Header.Type)
 			{
 			case SmBios.Type.PortConnector:
   				PortConnector type8 = (PortConnector)type;
   				if(type8.Type.Port == SmBios.Type8.PortType.USB && type8.InternalReferenceDesignator.StartsWith("USB_3"))
     				Console.WriteLine("USB 3.0 port found");
   			break;
			}
	}
}

Example how to save SMBIOS information:

FirmwareT fw = new FirmwareT();
System.IO.File.WriteAllBytes(@"C:\Temp\Firmware\smbios.sfw", fw.Save());

Example how to load SMBIOS infromation from file:

try{
	FirmwareT smbios = new FirmwareT(System.IO.File.ReadAllBytes(@"C:\Temp\Firmware\smbios.sfw"));
} catch(ArgumentNullException)//Empty file
{
...
} catch(ArgumentException)//Invalid signature or invalid firmware type (Ex. loading ACPI data)
{
...
}

About

Managed wrapper Win32 API functions: GetSystemFirmwareTable and EnumSystemFirmwareTables


Languages

Language:C# 100.0%